使用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; 我同意,但是striposstrpos 相对,越慢,字符串越长,正则表达式可能会更快。在***.com/questions/1962031/… 上查看类似的问题和我的基准【参考方案2】:

尝试模式/cli?|ent/

解释:

cli 匹配第一部分。我?使 i 在搜索中成为可选项。

| 表示或,与 client 匹配。

【讨论】:

【参考方案3】:

\b 是单词边界,它不会匹配client 中的cli,您需要删除\b

【讨论】:

以上是关于使用php比较字符串的一部分的主要内容,如果未能解决你的问题,请参考以下文章

== 在 PHP 中是区分大小写的字符串比较吗?

php字符串比较函数

PHP 两字符串比较,值相同 对比却不相等

php字符串比较意外类型杂耍

不考虑 PHP 顺序的字符串比较

php echo/print 输出函数比较