繁体   English   中英

PHP preg_match_all html标记内容搜索

[英]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>

所以,我需要分别计算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;
    }
}

但它只适用于第一个例子,在第二个例子中我需要用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM