Php 计算一个字符串中使用了列表中的多少个单词

Php 计算一个字符串中使用了列表中的多少个单词,php,regex,laravel-5,Php,Regex,Laravel 5,我的列表如下所示: $hotWords = ['fedora', 'tips', 'reddit', '/r/', 'god', 'le', 'army', 'iq', 'redditor', 'm\'lady']; 这个想法是,这些单词在字符串中出现的越多,“权重”就越高 我计划使用一些不区分大小写的正则表达式来匹配这些短语,但是我希望为每个单词的使用添加一个额外的点,包括每次单词出现时添加一个权重值,即使它是重复的 基本上,这个数组中的每个匹配都等于一个额外的点。我怎样才能开始编程呢 $h

我的列表如下所示:

$hotWords = ['fedora', 'tips', 'reddit', '/r/', 'god', 'le', 'army', 'iq', 'redditor', 'm\'lady'];
这个想法是,这些单词在字符串中出现的越多,“权重”就越高

我计划使用一些不区分大小写的正则表达式来匹配这些短语,但是我希望为每个单词的使用添加一个额外的点,包括每次单词出现时添加一个权重值,即使它是重复的

基本上,这个数组中的每个匹配都等于一个额外的点。我怎样才能开始编程呢

$hotWords = ['fedora', 'tips', 'reddit', '/r/', 'god', 'le', 'army', 'iq', 'redditor', 'm\'lady'];
$points = substr_count(
    preg_replace('#('.implode('|',$hotWords).')#','**~'~**',$string)
,'**~'~**');
也许。。可以做得更好,也许你有太多额外的逃脱一些字符的正则表达式

也许。。可以做得更好,也许你有太多额外的逃脱一些字符的正则表达式

也许。。可以做得更好,也许你有太多额外的逃脱一些字符的正则表达式


也许。。如果可以做得更好,可能您有太多的转义字符用于正则表达式

您可以使用一个正则表达式,如:
/\b(word1 | word2 | word3 | word4)\b/is
在一个
preg\u match\u all
调用中,以获取发生的总数:

$hotWords = ['fedora', 'tips', 'reddit', '/r/', 'god', 'le', 'army', 'iq', 'redditor', 'm\'lady'];
$re = '/\b(' . implode('|', array_map(function($word) { return preg_quote($word, '/'); }, $hotWords)) . ')\b/is';
$string = 'fedora foo bar tips fedora fedoras';
//         ^1             ^2   ^3
echo preg_match_all($re, $string); // 3

但是,请注意,这与以单词分隔符(如
/r/
)开头或结尾的“单词”不匹配,因此您可能希望用自己的字符集替换
\b

您可以在
preg\u all
调用中使用类似的正则表达式:
/\b(word1 | word2 | word3 | word4)\b/is
,要获取事件总数,请执行以下操作:

$hotWords = ['fedora', 'tips', 'reddit', '/r/', 'god', 'le', 'army', 'iq', 'redditor', 'm\'lady'];
$re = '/\b(' . implode('|', array_map(function($word) { return preg_quote($word, '/'); }, $hotWords)) . ')\b/is';
$string = 'fedora foo bar tips fedora fedoras';
//         ^1             ^2   ^3
echo preg_match_all($re, $string); // 3

但是,请注意,这与以单词分隔符(如
/r/
)开头或结尾的“单词”不匹配,因此您可能希望用自己的字符集替换
\b

您可以在
preg\u all
调用中使用类似的正则表达式:
/\b(word1 | word2 | word3 | word4)\b/is
,要获取事件总数,请执行以下操作:

$hotWords = ['fedora', 'tips', 'reddit', '/r/', 'god', 'le', 'army', 'iq', 'redditor', 'm\'lady'];
$re = '/\b(' . implode('|', array_map(function($word) { return preg_quote($word, '/'); }, $hotWords)) . ')\b/is';
$string = 'fedora foo bar tips fedora fedoras';
//         ^1             ^2   ^3
echo preg_match_all($re, $string); // 3

但是,请注意,这与以单词分隔符(如
/r/
)开头或结尾的“单词”不匹配,因此您可能希望用自己的字符集替换
\b

您可以在
preg\u all
调用中使用类似的正则表达式:
/\b(word1 | word2 | word3 | word4)\b/is
,要获取事件总数,请执行以下操作:

$hotWords = ['fedora', 'tips', 'reddit', '/r/', 'god', 'le', 'army', 'iq', 'redditor', 'm\'lady'];
$re = '/\b(' . implode('|', array_map(function($word) { return preg_quote($word, '/'); }, $hotWords)) . ')\b/is';
$string = 'fedora foo bar tips fedora fedoras';
//         ^1             ^2   ^3
echo preg_match_all($re, $string); // 3

但是请注意,这与以单词分隔符(如
/r/
)开头或结尾的“单词”不匹配,因此您可能需要用自己的字符集替换
\b

您可以将字符串转换为单词数组,并在数组上运行以获得匹配的单词。这将适用于
/r/
和其他不友好的regexp“单词”

输出:

4

您可以将字符串转换为一个单词数组,并在数组上运行以获得匹配的单词。这将适用于
/r/
和其他不友好的regexp“单词”

输出:

4

您可以将字符串转换为一个单词数组,并在数组上运行以获得匹配的单词。这将适用于
/r/
和其他不友好的regexp“单词”

输出:

4

您可以将字符串转换为一个单词数组,并在数组上运行以获得匹配的单词。这将适用于
/r/
和其他不友好的regexp“单词”

输出:

4

可能使用preg_replace()和一些唯一的且比substr_count()唯一的可能使用preg_replace()和一些唯一的且比substr_count()唯一的可能使用preg_replace()和一些唯一的且比substr_count()唯一的可能使用preg_replace()这是唯一的,请记住,例如“tip”和“tipper”不在这里工作,只有唯一的查找请记住,例如“tip”和“tipper”不在这里工作,只有唯一的查找请记住,例如“tip”和“tipper”不在这里工作,只有唯一的查找请记住,例如“tip”和“tipper”不在这里工作,只有唯一的查找在使用hotword
fedora
时,这不会匹配类似于
fedoras
的内容。为此,您必须将这些变体添加到
$hotWords
数组中,或者使用更复杂的匹配算法。您可能需要查看和。但在使用hotword
fedora
时,这与类似于
fedoras
的内容不匹配。为此,您必须将这些变体添加到
$hotWords
数组中,或者使用更复杂的匹配算法。您可能需要查看和。但在使用hotword
fedora
时,这与类似于
fedoras
的内容不匹配。为此,您必须将这些变体添加到
$hotWords
数组中,或者使用更复杂的匹配算法。您可能需要查看和。但在使用hotword
fedora
时,这与类似于
fedoras
的内容不匹配。为此,您必须将这些变体添加到
$hotWords
数组中,或者使用更复杂的匹配算法。你可能想看看,然后。