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
数组中,或者使用更复杂的匹配算法。您可能需要查看和。但在使用hotwordfedora
时,这与类似于fedoras
的内容不匹配。为此,您必须将这些变体添加到$hotWords
数组中,或者使用更复杂的匹配算法。您可能需要查看和。但在使用hotwordfedora
时,这与类似于fedoras
的内容不匹配。为此,您必须将这些变体添加到$hotWords
数组中,或者使用更复杂的匹配算法。您可能需要查看和。但在使用hotwordfedora
时,这与类似于fedoras
的内容不匹配。为此,您必须将这些变体添加到$hotWords
数组中,或者使用更复杂的匹配算法。你可能想看看,然后。