【问题标题】:PHP count instances of array items in a stringPHP计算字符串中数组项的实例
【发布时间】:2020-03-29 21:13:19
【问题描述】:

在 PHP 7.3 中:

鉴于这一系列低相关性关键字...

$low_relevancy_keys = array('guitar','bass');

还有这些可能的字符串...

$keywords_db = "red white"; // desired result 0
$keywords_db = "red bass"; // desired result 1
$keywords_db = "red guitar"; // desired result 1
$keywords_db = "bass guitar"; // desired result 2

如上所述,我需要知道匹配的数量。一种乏味的方法是将字符串转换为新数组 ($keywords_db_array),循环遍历 $keywords_db_array,然后循环遍历 $low_relevancy_keys,同时增加匹配计数。 PHP中有更直接的方法吗?

【问题讨论】:

  • PHP 中没有更直接的方法了。
  • 顺便说一句,我不称之为乏味

标签: php arrays string


【解决方案1】:

您在问题中描述的方式,但使用 array_* 函数:

echo count(array_intersect(explode(' ', $keywords_db), $low_relevancy_keys)); 

(请注意,如果需要更灵活,可以将explode 替换为preg_split

或使用preg_match_all(返回匹配数)

$pattern = '~\b' . implode('\b|\b', $low_relevancy_keys) . '\b~';

echo preg_match_all($pattern, $keywords_db); 

demo

【讨论】:

  • array_intersect 正是我想要的。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-04-24
  • 2014-12-27
  • 2012-11-06
  • 1970-01-01
  • 2013-05-03
  • 2023-03-13
  • 2018-04-20
相关资源
最近更新 更多