我需要计算字符串(How many times some word occurs in a string)
中的一些特定单词,我怎样才能在php中执行此操作?
实施例
$words = array("woman", "murder", "rape", "female", "dowry");
$string = "A dowry deaths is a murder or suicide of a married woman caused by a dispute over her dowry.[4] In some cases, husbands and in-laws will attempt to extort a greater dowry through continuous harassment and torture which sometimes results in the wife committing suicide";
第一项是某个单词的捆绑,如果这个单词与下面的字符串匹配,则增加其值......
结果示例如:
dowry= 1;
murder =2;
women =5;
答案 0 :(得分:2)
函数substr_count
做你想做的事情
foreach($words as $word)
echo $word .' ' . substr_count($string, $word) . "\n";
结果
women 0
murder 1
rape 0
female 0
dowry 3
答案 1 :(得分:2)
尝试:
substr_count
- 计算子字符串出现次数
$string = "A dowry deaths is a murder or suicide of a married woman caused by a dispute over her dowry.[4] In some cases, husbands and in-laws will attempt to extort a greater dowry through continuous harassment and torture which sometimes results in the wife committing suicide";
$words = array("women", "murder","rape","female","dowry");
foreach($words as $word) {
echo $word." occurance are ".substr_count($string, $word)." times <br />";
}
输出:
女性出现 0 次
谋杀出现 1 次
强奸出现 0 次
女性出现 0 次
嫁妆出现 3 次
答案 2 :(得分:1)
您可以将字符串拆分为单词,然后遍历单词数组并检查它是否是$ words数组中的单词之一是相同的。
$arrayOfString = explode(" ", $string); //splitting in between spaces will return a new array
for ($i = 1; $i <= $arrayOfString.count(); $i++) //loop through the arrayOfString array
{
for($j = $words.count(); $j >= 1; $j--)//loop through the words array
{
if($arrayOfString[i] == $words[j])
{
echo("You have a match with: " + $words[j]); //Add your count logic here
}
}
}
希望这适合你。
你可能有更好的方法来做这件事,但我自己也喜欢这种逻辑。
答案 3 :(得分:1)
使用substr_count将是直截了当的
$string = 'I just ate a delicious apple, and John ate instead a banana ice cream';
$words = ['banana', 'apple', 'kiwi'];
foreach($words as $word) {
$hashmap[$word] = substr_count($string, $word);
}
现在$hashmap
包含一个word => occurrences
array(3) {
["banana"] => int(1)
["apple"] => int(1)
["kiwi"] => int(0)
}