<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>
在 PHP 中使用preg_match
或者preg_match_all
我想检索文本“如果没有头部受伤太微不足道而无法忽视,那么:”
我怎样才能做到这一点?
<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>
在 PHP 中使用preg_match
或者preg_match_all
我想检索文本“如果没有头部受伤太微不足道而无法忽视,那么:”
我怎样才能做到这一点?
代码 :
<?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. 没有捕获,但您的 2. 字符串呢?只要你不解释,我只能猜测,所以作为一个表达式:
/<\w+(?:\s+\w+=(?:(?:"[^"]*")|(?:'[^']*')))*\s*>([^<]+)</\w+>/g
将匹配所有仅包含文本节点的 html 标签(对于 xhtml 来说应该是这样,因为<p>text<br /></p>
格式不正确......)。
so<p>text</p><br>text2</br>
将被匹配,因此文本将在捕获组 1 中。
<\w+(?:\s+\w+=(?:(?:"[^"]*")|(?:'[^']*')))*\s*>
将捕获每个打开的 xhtml 标记
([^<]+)
将捕获除 < 之外的所有 cahrs 并将其放入捕获组
</\w+>
终于抓住了结束标签...
这g
是全局标志,以便表达式可以捕获多个结果...
祝你好运,如果你需要不同的东西,请更精确一点......
模式将是这样的:
/<\s*b\s*>(.+)<\s*\/b\s*>/