我有一个问题,我想在文本的html标签中计算符号数。
文字示例1:
Hello <b>world</b>, <i>stackoverflow</i>
文字示例2:
Hello <b>world, <i>stackoverflow</i></b>
因此,我需要分别计算 b 和 i 中的符号数量。
我这样做了:
preg_match_all('#<(b|i)>(.*)<\/(b)>#Uusi', $temp, $tags_check);
foreach($tags_check[2] as $val)
{
if(mb_strlen($val) > 50)
{
$errors = 'error';
break;
}
}
但它只适用于第一个例子,在第二个例子中我需要用regexp做一些事情。我需要在开始 b 和结束 b 时搜索,但不要在开始 b 和结束 i 时搜索,我怎么能这样做?
答案 0 :(得分: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;
}
祝你好运!