php数组中是否包含某字符串中,PHP如何测试数组中某个值是否存在(部分)在字符串中?...

该博客介绍了如何在PHP中利用正则表达式和边界匹配符来查找字符串中的特定单词。文章提出了两种解决方案,一种是通过在搜索词周围添加空格并使用preg_match函数,另一种是遍历数组并使用strpos函数。这两种方法都确保了单词的边界匹配,避免了部分匹配的问题。此外,博客还强调了在正则表达式中使用边界字符的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

更新:

单词边界无关的解决方案是在输入字符串和搜索词周围添加空格:

$str = ' ' . $str . ' ';

function quote($a) {

return ' ' . preg_quote($a, '/') . ' ';

}

$word_pattern = '/' . implode('|', array_map('quote', $array)) . '/';

if(preg_match($word_pattern, $str) > 0) {

}或通过循环术语:

foreach($array as $term) {

if (strpos($str, ' '. $term . ' ') !== false) {

// word contained

}

}两者都可以用于简化使用的功能,例如,

function contains($needle, $haystack) {

$haystack = ' ' . $haystack . ' ';

foreach($needle as $term) {

if(strpos($haystack, ' ' . $term . ' ') !== false) {

return true;

}

}

return false;

}看一下DEMO

老答案:

你可以使用正则表达式:

function quote($a) {

return preg_quote($a, '/');

}

$word_pattern = implode('|', array_map('quote', $array));

if(preg_match('/\b' . $word_pattern . '\b/', $str) > 0) {

}这里重要的部分是边界字符\b。如果您搜索的值是字符串中的(序列)单词,则只会得到匹配项。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值