1

我有一个问题,我想对文本中的 html 标记中的符号进行计数。

文字示例1:

Hello <b>world</b>, <i>stackoverflow</i>

文本示例 2:

Hello <b>world, <i>stackoverflow</i></b>

所以,我需要分别计算bi中有多少个符号块。

我这样做了:

preg_match_all('#<(b|i)>(.*)<\/(b)>#Uusi', $temp, $tags_check);

foreach($tags_check[2] as $val)
{
    if(mb_strlen($val) > 50)
    {
        $errors = 'error';
        break;
    }
}

但它只适用于第一个例子,在第二个例子中我需要用正则表达式做一些事情。我需要在 start b和 end b上搜索,而不是在 start b和 end i上搜索,我该怎么做?

4

1 回答 1

3

DOM + XPath 方法来实现:

$html = 'Hello <b>world</b>, <i>stackoverflow</i>';
$dom = new DOMDocument;
$dom->loadHTML($html);
$xpath = new DOMXPath($dom);
$error_nodes = $xpath->query('//b[string-length(text()) > 50]|//i[string-length(text()) > 50]');

foreach ($error_nodes as $node) {
    print $node->nodeValue;
}

祝你好运!

于 2013-11-13T23:13:16.243 回答