1

特定の単語が特定のhtmlタグに表示される回数を数える必要があります。現在、タグに表示される単語の総数しか数えられませんでした。また、ドキュメントに単語が合計で表示される回数を数えることはできますが、たとえば、h3タグだけに単語が表示される回数を数える方法がわかりません。

必要なものの例:

Sample text here, blah blah blah, lorem ipsum
<h3>Lorem is in this h3 tag, lorem.</h3>
lorem ipsum dolor....
<h3>This is another h2 with lorem in it</h3>

ご覧のとおり、「lorem」という単語はそのコードに4回含まれていますが、「lorem」という単語がh3タグに表示される回数だけを数えたいと思います。

このプロジェクトではPHPを使い続けたいと思います。

ご助力ありがとうございます

4

2 に答える 2

2

私はこのようにDOMDocumentを使用します:

$string = 'Sample text here, blah blah blah, lorem ipsum
<h3>Lorem is in this h3 tag, lorem.</h3>
lorem ipsum dolor....
<h3>This is another h2 with lorem in it</h3>';

$html = new DOMDocument(); // create new DOMDocument
$html->loadHTML($string);  // load HTML string
$cnt = array();           // create empty array for words count
foreach($html->getElementsByTagName('h3') as $one){ // loop in each h3
    $words = str_word_count(strip_tags($one->nodeValue), 1, '0..9'); // count words including numbers
    foreach($words as $wo){ // create an key for every word 
        if(!isset($cnt[$wo])){ $cnt[$wo] = 0; } // create key if it doesn't exit add 0 as word count
        $cnt[$wo]++; // increment it's value each time it's repeated - this will result in the word having count 1 on first loop
    }
}


var_export($cnt); // dump words and how many it repeated
于 2012-09-01T17:26:32.417 に答える
0

正規表現を使用してこれを行うこともできます。

<?php
    $string = 'Sample text here, blah blah blah, lorem ipsum
    <h3>Lorem is in this h3 tag, lorem.</h3>
    lorem ipsum dolor....
    <h3>This is another h2 with lorem in it</h3>';

     preg_match_all("/lorem(?=(?:.(?!<h3>))*<\/h3>)/i", $string, $matches);

     if (isset($matches[0])) {
        $count = count($matches[0]);
     } else {
        $count = 0;
     }

?>
于 2012-09-01T17:33:59.080 に答える