gpt4 book ai didi

php - 精确匹配的 Strpos

转载 作者:太空宇宙 更新时间:2023-11-04 15:22:05 27 4
gpt4 key购买 nike

我在 php 中有一个函数,我想对一个字符串执行简单的搜索,使用 kw 作为搜索短语,如果找到则返回 true。

这是我现在拥有的:

for($i=0; $i<count($search_strings); $i++){
$pos = strpos($search_strings[$i], $kw_to_search_for);
}

这工作正常,并且确实在正在搜索的字符串中找到了关键字,但问题是 strpos 不匹配确切的短语或单词。

例如,如果字符串中包含单词 'PHP',则搜索 'HP' 将返回 true。

我知道 preg_split 和可用于精确匹配的正则表达式,但就我而言,我不知道每次搜索的关键字 是什么,因为关键字是用户输入的

因此关键字可以是“hot-rods”、“AC/DC”、“Title:Subject”等...这意味着我不能拆分单词并单独检查它们,因为我必须为正则表达式使用某种动态模式。

如果有人知道一个好的解决方案,我将不胜感激。

我的意思是,基本上我只想要完全匹配,所以如果 KW 是“Prof”,那么如果搜索字符串中的匹配项是“Prof”并且周围没有任何其他字符,这将返回 true。
例如,“Professional”必须为 FALSE。

最佳答案

你可以使用单词边界\b:

if (preg_match("/\b".preg_quote($kw_to_search_for)."\b/i", $search_strings[$i])) {
// found
}

例如:

echo preg_match("/\bProfessional\b/i", 'Prof'); // 0
echo preg_match("/\bProf\b/i", 'Prof'); // 1

/i 修饰符使其不区分大小写。

关于php - 精确匹配的 Strpos,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7733529/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com