<font size="+1"><font size="+2" color="green"><b>1.</b>
</font><b>If no head injury is too trivial to be neglected, then:</b></font>
在使用preg_match
或preg_match_all
的PHP中,我想检索文本“如果没有头部受伤太容易被忽视,那么:”
我该怎么做?
答案 0 :(得分:2)
代码:
<?php
$str = '<font size="+1"><font size="+2" color="green"><b>1.</b></font><b>If no head injury is too trivial to be neglected, then:</b></font>';
$pattern = "/font><b>(.+)<\/b>/";
preg_match($pattern,$str,$matches);
echo $matches[1];
?>
输出
如果没有头部受伤太容易被忽视,那么:
答案 1 :(得分:0)
我不确定,在你选择要捕获的字符串的条件下,为什么得到1.未捕获,但是你的2.字符串呢?只要你不解释我只能猜测,所以作为一个表达式:
/<\w+(?:\s+\w+=(?:(?:"[^"]*")|(?:'[^']*')))*\s*>([^<]+)</\w+>/g
将匹配所有html标记,它们只包含一个文本节点(对于xhtml应该是这种情况,因为<p>text<br /></p>
不能正常...)。
因此<p>text</p><br>text2</br>
将匹配,因此文本将位于捕获组1中。
<\w+(?:\s+\w+=(?:(?:"[^"]*")|(?:'[^']*')))*\s*>
将捕获每个开头的xhtml标记
([^<]+)
将捕获所有来自&lt;并将其放入捕获组
</\w+>
终于抓住了结束标签......
g
是全局标志,因此表达式可以捕获多个结果......
祝你好运,如果你需要不同的东西,请更准确一点......
答案 2 :(得分:-1)
模式将是这样的:
/<\s*b\s*>(.+)<\s*\/b\s*>/