我有以下代码:
<p> <img src="spas01.jpg" alt="" width="630" height="480"></p>
<p style="text-align: right;"><a href="spas.html">Spas</a></p>
<p>My Site Content [...]</p>
我需要一个正则表达式才能获得“我的网站内容[...]”。 所以,我需要忽略第一张图片(也许是其他图片)和链接。
答案 0 :(得分:1)
试试这个:
使用(?<=<p>)([^><]+)(?=</p>)
或<p>\K([^><]+)(?=</p>)
更新
$re = "@<p>\\K([^><]+)(?=</p>)@m";
$str = "<p> <img src=\"spas01.jpg\" alt=\"\" width=\"630\" height=\"480\"></p>\n<p style=\"text-align: right;\"><a href=\"spas.html\">Spas</a></p>\n<p>My Site Content [...]</p>";
preg_match_all($re, $str, $matches);
<强> Demo 强>
答案 1 :(得分:0)
使用DOMDocument和DOMXPath:
$html = <<<'EOD'
<p> <img src="spas01.jpg" alt="" width="630" height="480"></p>
<p style="text-align: right;"><a href="spas.html">Spas</a></p>
<p>My Site Content [...]</p>
EOD;
$dom = new DOMDocument;
$dom->loadHTML($html);
$xp = new DOMXPath($dom);
$query = '//p//text()[not(ancestor::a)]';
$textNodes = $xp->query($query);
foreach ($textNodes as $textNode) {
echo $textNode->nodeValue . PHP_EOL;
}