0

重複の可能性:
正規表現 - 貪欲 - HTML タグ、コンテンツ、および属性の一致

解析したいテキストは次のようなものです。

Dir: <a href="/name/nm0381817/">Vinton Heuck</a>, <a href="/name/nm1367649/">Ciro Nieli</a>
    With: <a href="/name/nm0519680/">Eric Loomis</a>, <a href="/name/nm0732436/">Bumper Robinson</a>, <a href="/name/nm1685408/">Dawn Olivieri</a>

通常、"Dir" の後に 1 つまたは 2 つのアンカー要素があり、"With" の後に複数のアンカー要素があります。

私がやりたいのは、「Dir」の後と「With」の前のアンカー要素のすべての値を取得することです。次のような正規表現を試しました。

preg_match_all("/Dir: <a href=\"\/name\/.+\/\">(.+)<\/a>/", $content, $matches);

ただし、これは「Dir」の後にアンカー要素が 1 つしかない場合にのみ機能します。助言がありますか?ありがとう!

4

3 に答える 3

0

アンカータグを見つけるために正規表現をグループ化し、+ を 1 つ以上使用する必要があります。

何かのようなもの:

/Dir: (<a href=\"\/name\/.+\/\">(.+)<\/a>)+/

コンマを考慮して編集する必要がありますが、それで作業を開始できます。

于 2012-10-23T00:24:44.563 に答える
0

「Dir:」を含む行が 1 回だけ表示されると仮定すると、次のようになります。

preg_match_all("/(<([[:graph:]]+)[^>]*>)(.*?)(<\/\\2>)/", preg_replace("/[[:blank:]]*With:.*/","",$content), $matches);

print_r($matches[3]);
于 2012-10-23T04:33:39.660 に答える
0

1つだけでなく1つまたは2つのリンクを取得するためのグループ化命令「()+」が欠落していると思います。正規表現をテストするためにこれを見てください。

于 2012-10-23T00:22:09.370 に答える