【发布时间】:2013-12-02 02:43:28
【问题描述】:
我已经阅读了比较这两个函数的其他帖子。 strpos() 和 preg_match()。我知道strpos() 是您要查找的确切字符串,但如果搜索主题出现在字符串中怎么办。
$string = 'Honda 1974 1975 CB200 T Front ATK Wheel Hub w/ Brake Disc Rotor 18" x 1.60 Straight!';
我需要寻找 CB200 和一堆其他类似的型号,例如 CB1000、CR250、CR125 等等。
如果我用过
preg_match('/^.*\b(c{1}b{1}2{1}0{1}0{1})\b.*$/i',$string)
我会得到前面或后面没有任何内容的确切字符串,但 strpos($string,'CB200') 会找到匹配项,无论搜索主题的前面或后面是什么。
示例:Honda FrontCB200ATK Wheel Hub。如果那是零件号,那么strpos() 将失败。我可以让strpos() 更准确还是在这种情况下我需要使用preg_match()?放弃strpos()的速度。该脚本将在每次执行时最多比较 10,000 个$string,每次比较时要遵循多个条件。
【问题讨论】:
-
看看这里:stackoverflow.com/questions/6896587/… 不完全是你在说什么,但它可能会帮助你找出一个更优雅的解决方案。虽然无法回答有关提高 str[i]pos() 准确性的问题。
-
@r3mus 好的,谢谢你的链接。我厌倦了阅读有关
strpos()和preg_match()的内容。好像我只是一直在读同样的东西。与客户交谈,模型非常独特,因此我将使用str_pos()不区分大小写,因为客户声明所有模型都将使用大写字母。 -
这是我最终使用的:
(strpos($data[$i]['title'], 'CB1000') !== false) ? $data[$i]['category_id']=123 : '';