2

私は自分自身をPHPの「初心者」とは考えていませんが、正規表現はまだ私にとって新しいものです。

コメントのリストを受け取るCURLを実行しています。すべてのコメントには次のHTML構造があります。

<div class="comment-text">the comment</div>

私が欲しいのは単純です。preg_match_allから、この特定のDIVタグに「cool」という単語が含まれるコメントを取得したいと思います。

私がこれまでに持っているもの:

preg_match_all("#<div class=\"comment-text\">\bcool\b</div>#Uis", $getcommentlist, $matchescomment);

悲しいことに、これは機能しません。ただし、正規表現が単純な場合は#\bcool\b#Uis機能します。しかし、私は本当にそれらのタグで「クール」という言葉をキャプチャしたいと思います。

2つの正規表現(1つはすべてのコメントを取得し、もう1つはそれぞれをフィルタリングして「クール」という単語をキャプチャする)を実行できることは知っていますが、1つのpreg_match_allでこれを実行するにはどうすればよいでしょうか。

私は解決策から遠くはないと思いますが、どういうわけか私はそれを見つけることができません。何かが間違いなく欠けています。

お時間をいただきありがとうございます。

4

1 に答える 1

2

これにより、探しているものが得られ、少し変更したい場合は柔軟性が得られます。

$input = '<div class="comment-text">the comment</div><div class="comment-text">cool</div><div class="comment-text">this one is cool too</div><div class="comment-text">ool</div>';
$class="comment-text";
$text="cool";
$pattern = '#<div class="'.$class.'">([^<]*'.$text.'[^<]*)</div>#s';
preg_match_all($pattern, $input, $matches);

明らかに、入力をの値として設定する必要があります$input。これが実行された後、<div>一致したsの配列が含まれ$matches[0]、一致したテキストの配列が含まれます。$matches[1]

$class$text値をそれぞれ変更することで、一致するようにdivのクラスを変更したり、必要なdiv内のテキストを変更したりできます。

于 2010-07-26T12:32:13.517 に答える