[英]PHP preg_match_all html tags content search
我有一个问题,我想在文本中的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 ,我该怎么做?
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;
}
祝好运!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.