【发布时间】:2011-12-05 17:16:46
【问题描述】:
我在 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 和可用于进行完全匹配的正则表达式,但就我而言,我不知道每次搜索的 keyword 是什么,因为关键字是用户输入的。
所以关键字可以是“hot-rods”、“AC/DC”、“Title:Subject”等... 这意味着我不能拆分单词并单独检查它们,因为我必须为正则表达式使用某种动态模式。
如果有人知道一个好的解决方案,我将不胜感激。
我的意思是,基本上我只想要完全匹配,所以如果 KW 是“Prof”,那么如果搜索字符串中的匹配是“Prof”并且周围没有任何其他字符,这将返回 true。
例如,“Professional”必须为 FALSE。
【问题讨论】:
-
我有点困惑,您是否要求进行 str 比较?你不是在问:
$search_strings[$i] === $kw_to_search_for是吗? -
我想我上当了,
...doesn't have any other characters surrounding it。不过,如果要搜索一个词,@webbiedave 的解决方案是有意义的。