HTML を削除して単語を配列に配置し、array_count_values を使用する関数があります。各単語の出現回数を報告しようとしています。出力された配列は非常に乱雑です。私はそれをきれいにしようとしましたが、どこにも行きません。電話番号を削除したいのですが、なぜかフレーズがくっついています。また、最初の配列はnullのようですが、 isset() または empty() は設定を解除していないようです。
$body = $this->get_response($domain);
$body = preg_replace('/<body(.*?)>/i', '<body>', $body);
$body = preg_replace('#</body>#i', '</body>', $body);
$openTag = '<body>';
$start = strpos($body, $openTag);
$start += strlen($openTag);
$closeTag = '</body>';
$end = strpos($body, $closeTag);
// Return if cannot cut-out the body
if ($end <= $start || $start === false || $end === false) {
$this->setValue('');
return;
}
$body = substr($body, $start, $end - $start);
$body = preg_replace(array(
'@<script[^>]*?>.*?</script>@si', // Strip out javascript
'@<style[^>]*?>.*?</style>@siU', // Strip style tags properly
'@<![\s\S]*?--[ \t\n\r]*>@', // Strip multi-line comments including CDATA
'/style=([\"\']??)([^\">]*?)\\1/siU',// Strip inline style attribute
), '', $body);
$body = strip_tags($body);
$body = array_filter(explode(' ', $body), create_function('$str', 'return strlen($str) > 2;'));
$body = array_map('trim', $body);
$words = $body;
$i = 0;
$words = array_count_values($words);
foreach($words as $word){
if (empty($word)) unset($words[$i]);
$i++;
}
echo "<pre>";
print_r($words);
echo "</pre>";
出力
Array
(
[] => 28
[333.444.5555] => 1
[facebook] => 2
[twitter] => 2
[linkedin] => 2
[youtube
googleplus] => 1
[About
History
Our] => 1
[Mission
Who] => 1
[This
That
Other] => 1
[Us
English
FA
Football] => 1
[Media
Pay] => 2
[Per] => 4
[Think
Fast] => 2
[Marketing
Design] => 1
[Consulting
Case] => 2