1
<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我想检索文本“如果没有头部受伤太微不足道而无法忽视,那么:”

我怎样才能做到这一点?

4

3 回答 3

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];

?>

输出 :

如果没有任何头部受伤是微不足道而不容忽视的,那么:

于 2012-04-07T11:08:42.407 回答
0

我不确定,在什么条件下您选择要捕获的字符串,为什么 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是全局标志,以便表达式可以捕获多个结果...

祝你好运,如果你需要不同的东西,请更精确一点......

于 2012-04-07T11:27:54.010 回答
-1

模式将是这样的:

/<\s*b\s*>(.+)<\s*\/b\s*>/
于 2012-04-07T10:59:55.827 回答