substr_count() 计算 php 中的整个单词
substr_count() count whole words in php
我是 php 的新手,所以,我正在制作一个单词计数器程序。我试图计算网站中特定单词的实例数。
所以,我使用 Substr_count 来计算单词数,但问题是它会选择像 "sunlight" 这样的单词,因为它包含像 "sun".
这样的单词
这是我的代码。
/*When the user types the word*/
$search = $_POST["texto"];
/*The website*/
$page = $_POST["Web"];
$web = file_get_contents($page);
/*Count words*/
$result = (substr_count(strip_tags(strtolower($web)), strtolower($search)));
/*Display the information*/
if($result == 0){
echo "the word " .mb_strtoupper($search). " doesn't appear";
}else{
echo "the word " .mb_strtoupper($search). " appears $result times";
}
有什么办法可以解决这个问题吗?我尝试了 str_word_count 和 preg_match_all 但这显示了大数字。
我会使用 str_word_count()
的组合来获取所有单词和 array_count_values()
来计算这些单词出现的次数:
# Get an array with lowercase words
$array_with_words = str_word_count(strtolower('string to analyze'), 1);
# Get a count of all unique values
$array_with_words_count = array_count_values($array_with_words);
# Get the count of the word you are looking for
$your_count = $array_with_words_count[ strtolower('your_word') ];
str_word_cound($expression, 1) 函数会给你一个包含单词的关联数组,然后你可以使用 foreach 循环一次并构造一个包含单词频率的数组,如下所示:
$expr = "My test expression. <b>My</b> world.";
$words = str_word_count(strip_tags(strtolower($expr)), 1);
$groupedWords = [];
foreach ($words as $word) {
print_r($word);
$groupedWords[$word] ++;
}
print_r($groupedWords);
将打印:
Array
(
[my] => 2
[test] => 1
[expression] => 1
[world] => 1
)
查看一个词被使用了多少次:
var_dump(array_key_exists('specific_word_you_look_for', $groupedWords) ? $groupedWords['specific_word_you_look_for'] : false);
// will output the frequency or false if not found
如果你想使用预定义函数,那么使用str_word_count()
示例:
<?php
echo str_word_count("stack gives answer");
?>
输出:3
这样做就可以了:
/*Count words*/
$result = preg_match_all('/\b'. strtolower($search) .'\b/', strtolower($web));
我是 php 的新手,所以,我正在制作一个单词计数器程序。我试图计算网站中特定单词的实例数。 所以,我使用 Substr_count 来计算单词数,但问题是它会选择像 "sunlight" 这样的单词,因为它包含像 "sun".
这样的单词这是我的代码。
/*When the user types the word*/
$search = $_POST["texto"];
/*The website*/
$page = $_POST["Web"];
$web = file_get_contents($page);
/*Count words*/
$result = (substr_count(strip_tags(strtolower($web)), strtolower($search)));
/*Display the information*/
if($result == 0){
echo "the word " .mb_strtoupper($search). " doesn't appear";
}else{
echo "the word " .mb_strtoupper($search). " appears $result times";
}
有什么办法可以解决这个问题吗?我尝试了 str_word_count 和 preg_match_all 但这显示了大数字。
我会使用 str_word_count()
的组合来获取所有单词和 array_count_values()
来计算这些单词出现的次数:
# Get an array with lowercase words
$array_with_words = str_word_count(strtolower('string to analyze'), 1);
# Get a count of all unique values
$array_with_words_count = array_count_values($array_with_words);
# Get the count of the word you are looking for
$your_count = $array_with_words_count[ strtolower('your_word') ];
str_word_cound($expression, 1) 函数会给你一个包含单词的关联数组,然后你可以使用 foreach 循环一次并构造一个包含单词频率的数组,如下所示:
$expr = "My test expression. <b>My</b> world.";
$words = str_word_count(strip_tags(strtolower($expr)), 1);
$groupedWords = [];
foreach ($words as $word) {
print_r($word);
$groupedWords[$word] ++;
}
print_r($groupedWords);
将打印:
Array
(
[my] => 2
[test] => 1
[expression] => 1
[world] => 1
)
查看一个词被使用了多少次:
var_dump(array_key_exists('specific_word_you_look_for', $groupedWords) ? $groupedWords['specific_word_you_look_for'] : false);
// will output the frequency or false if not found
如果你想使用预定义函数,那么使用str_word_count()
示例:
<?php
echo str_word_count("stack gives answer");
?>
输出:3
这样做就可以了:
/*Count words*/
$result = preg_match_all('/\b'. strtolower($search) .'\b/', strtolower($web));