我需要一个匹配标签之间的文本的正则表达式,如p a,br: 普林斯顿分部负责人Albert Einstein 普林斯顿执行委员会成员
我有(Preg_match_all)
的模式 $pattern="/<\s*a[^>]++>(.*?)<\s*\/\s*a\s*>/"
;
但它只给我一个hrefs中的文字,
任何提示?谢谢 //继承样本来源
<p>
<a href="file.pdf" target="_blank"><b>Albert Einstein</b></a><br>
Division Head, Princeton<br>
Member of the Executive Committee of Princeton<br>
</p>
答案 0 :(得分:0)
使用dom解析器,您可以获取所需的标记内的值:
<?php
$html='<p>
<a href="file.pdf" target="_blank"><b>Albert Einstein</b></a><br>
Division Head, Princeton<br>
Member of the Executive Committee of Princeton<br>
</p>';
$dom = new DOMDocument;
$dom->loadHTML($html);
echo "[".$dom->getElementsByTagName('p')->item(0)->nodeValue."]";
您可以更改标记值并查看。
只需将值从p
更改为b
,即可获得b
标记内的文字,即[Albert Einstein]
答案 1 :(得分:0)
您应该使用HTML解析器。如果你真的想要一个正则表达式,你可以使用它:
$html = <<<EOF
<p>
<a href="file.pdf" target="_blank"><b>Albert Einstein</b></a><br>
Division Head, Princeton<br>
Member of the Executive Committee of Princeton<br>
</p>
EOF;
preg_match_all('%(?:\s+|<b>)([\w ]+)(?:</b>|<br>)%m', $html, $result, PREG_PATTERN_ORDER);
for ($i = 0; $i < count($result[1]); $i++) {
echo $result[1][$i]."\n";
}
/*
Albert Einstein
Princeton
Member of the Executive Committee of Princeton
*/