1

問題があります。テキストの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;
    }
}

しかし、それは最初の例でしか機能しません.2番目の例では、正規表現で何かをする必要があります. 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 に答える