使用php比较字符串的一部分
Posted
技术标签:
【中文标题】使用php比较字符串的一部分【英文标题】:compare portion of the string using php 【发布时间】:2011-01-10 17:44:39 【问题描述】:我想检查搜索关键字“cli”或“ent”或“cl”是否存在于字符串“client”中并且不区分大小写。我将 preg_match 函数与模式 '\bclient\b' 一起使用。但它没有显示正确的结果。匹配未找到错误获取。
请大家帮忙
谢谢
【问题讨论】:
【参考方案1】:我不会为此使用正则表达式,这是额外的开销和复杂性,而常规字符串函数就足够了。为什么不改用stripos()?
$str = 'client';
$terms = array('cli','ent','cl');
foreach($terms as $t)
if (stripos($str,$t) !== false)
echo "$t exists in $str";
break;
【讨论】:
strpos()/stripos()
比 strstr()/stristr()
更快,内存效率更高,如果您只需要知道给定的子字符串是否存在。
echo stripos('client',$filterstr);结果显示为 0。当我的搜索关键字 ='cli'
是的。如果您阅读stripos()
的文档,您会看到 if 返回子字符串匹配的位置索引,而不是子字符串本身。如果要输出匹配的术语,只需echo $filterstring
。你没有提到你想要在你的函数中什么样的输出,只是你想匹配一个子字符串,所以我假设你只是在寻找一个真/假匹配。
感谢您的帮助和快速回复。我使用该函数得到了结果。再次感谢。 $pos1 = stripos("client", $filterstr); if ($pos1 !== false) $flag=1;返回 $flag;
我同意,但是stripos
与strpos
相对,越慢,字符串越长,正则表达式可能会更快。在***.com/questions/1962031/… 上查看类似的问题和我的基准【参考方案2】:
尝试模式/cli?|ent/
解释:
cli 匹配第一部分。我?使 i 在搜索中成为可选项。
|
表示或,与 cli
或 ent
匹配。
【讨论】:
【参考方案3】:\b
是单词边界,它不会匹配client
中的cli
,您需要删除\b
【讨论】:
以上是关于使用php比较字符串的一部分的主要内容,如果未能解决你的问题,请参考以下文章