2

PHPアクティビティシステムでメタコンテンツを取得しようとしていますが、問題は、コンテンツを次のように提供していることです。

管理者が新しい投稿を書いた、FIRE 2日、2時間前

これで「火」という単語を取得したいのですが、タイトルなので動的で、投稿という単語を見つけることができます。これはすべての単語に共通しているので、次の単語を取得できるからpost,ですpost,。現在。誰かが私にこれを行う方法を提案できますか?このようなコンテンツがもう1つあるとします。

管理者が2日前、3時間前に更新を投稿しました

ないpost,ので避けます。

4

4 に答える 4

6

正規表現の使用

$string="admin wrote a new post, FIRE 2 days, 2 hours ago";
$result=preg_split('/post,/',$string);
if(count($result)>1){
$result_split=explode(' ',$result[1]);
print_r($result_split[1]);
}

これはFIREを出力します

ライブデモ

別の方法

$string="admin wrote a new post, FIRE 2 days, 2 hours ago";
$result=preg_match_all('/(?<=(post,))(\s\w*)/',$string,$matches);
print_r($matches[0]);

ライブデモ

于 2013-01-23T07:36:02.380 に答える
4

explode()メソッドを使用して、単語postの位置を見つけ、次の単語を抽出するだけです。

$pizza  = "piece1 piece2 piece3 piece4 piece5 piece6";
$pieces = explode(" ", $pizza);

foreach( $pieces as $key => $value )
{
if($pieces[$key] == 'post' )
{
echo $pieces[$key+1];
break;
}
}

または、専門家の方法:

echo $pieces[array_search('post', $pieces)+1];
于 2013-01-23T07:48:33.323 に答える
1

これには正規表現を使用します。

$string="admin wrote a new post, FIRE 2 days, 2 hours ago";
preg_match('/(?<=post, )\S+/i', $string, $match);
echo $match[0];

これがあなたのために働くことを願っています。

于 2013-01-23T07:55:58.577 に答える
0
  • 文字列を分割して配列に入れます
  • 「投稿」のインデックスを取得
  • 位置index+1の配列の値を取得します
于 2013-01-23T07:46:33.720 に答える