私は、指定されたURLからHTMLコンテンツを含む文字列を出力しています。私がしようとしていることは、どれくらいの単語が文字列内にあり、何回出現するかを調べることです。文字列中の単語の数を数えるPHP
例:
today | 1
どのように| 1
こんにちは、 1つの
コード:
$string = "Hello how are you today"
私は、指定されたURLからHTMLコンテンツを含む文字列を出力しています。私がしようとしていることは、どれくらいの単語が文字列内にあり、何回出現するかを調べることです。文字列中の単語の数を数えるPHP
例:
today | 1
どのように| 1
こんにちは、 1つの
コード:
$string = "Hello how are you today"
:
$word_counts = [];
// remove scripts and styles completely, then strip tags
$cResult = preg_replace('#<script(.*?)>(.*?)</script>#is', '', $cResult);
$cResult = preg_replace('#<style(.*?)>(.*?)</style>#is', '', $cResult);
$cResult = strip_tags($cResult);
// strip all characters that are not letters:
$word_array_raw = explode(' ',preg_replace('/[^A-Za-z ]/', ' ', $cResult));
// loop through array:
foreach ($word_array_raw as $word) {
$word = trim($word);
if($word) {
isset($word_counts[$word]) ? $word_counts[$word]++ : $word_counts[$word] = 1;
}
}
// Array with all stats sorted in descending order:
arsort($word_counts);
// Output format you wanted:
foreach ($word_counts as $word=>$count) {
echo "$word | $count<br>";
}
は、私はあなたのコードは、あなたの質問に関係しているかわからないんだけど、あなたは[ `str_split()`]試みることができる、それが
結果からhtmlタグ名を削除する方法はありますか? – user7588392
added strip_tags – paulz
私はそれを試みました。それは単に括弧を削除しただけです。私はまだ言葉自体が残っている。たとえば、getElementById。 – user7588392
このような何か:
$s = "lorem ipsum dolor sit amet, consectetur adipiscing elit, sit sed do lorem eiusmod tempor";
$w = preg_split('=[^\w]=', $s, NULL, PREG_SPLIT_NO_EMPTY);
$words = [];
foreach ($w as $word) {
if (!isset($words[$word])) $words[$word] = 0;
$words[$word]++;
}
print_r($words);
出力:
Array
(
[lorem] => 2
[ipsum] => 1
[dolor] => 1
[sit] => 2
[amet] => 1
[consectetur] => 1
[adipiscing] => 1
[elit] => 1
[sed] => 1
[do] => 1
[eiusmod] => 1
[tempor] => 1
)
あなたが探しているものということですか?入力としてあなたの$ CRESULTを取っ
を役に立てば幸い(http://php.net/manual/en/function.str-split.php)を使って空白を分割し、配列をループして、その単語を別の配列のキーとして使用し、毎回インクリメントします。任意の単語境界で分割したい場合は、['preg_split()'](http://php.net/manual/en/function.str-split.php)を使い、 '\ b'を分割します。ちょうど私の頭の上から離れて。 – alanlittle