PHP运算符与通配符“LIKE”等效

时间:2014-07-01 12:14:59

标签: php

当我搜索短语" xperia"在我的网站上,网址格式变为:

  

domain.com/?s=xperia

然后我使用此代码来显示 sony 特定的侧边栏。同样适用于 nokia

<?php 
if ( isset($_GET['s']) && $_GET['s']=="xperia") {
    get_sidebar('sony');
} else {
   if ( isset($_GET['s']) && $_GET['s']=="nokia") {
        get_sidebar('nokia');
    } else {
        get_sidebar('left');
    }
}

但是,如果有人搜索其他内容,我还希望显示 sony 侧边栏(但该短语包含关键字&#34; xperia&#34;)例如&#34; xperia z2& #34;

  

domain.com/?s=xperia+z2

是否可以修改此['s']=="xperia"以包含一种xperia *规则?

3 个答案:

答案 0 :(得分:3)

使用strpos

if(isset($_GET['s'] && strpos($_GET['s'], 'nokia') !== false)

答案 1 :(得分:1)

如果搜索字符串为空,请使用empty()。然后stripos()将执行不区分大小写的搜索:

if ( empty($_GET['s']) === false && stripos($_GET['s'], 'xperia') !== false) {
    get_sidebar('sony');
} elseif ( empty($_GET['s']) === false && stripos($_GET['s'], 'nokia') !== false) {
    get_sidebar('nokia');
} else {
    get_sidebar('left');
}

我还使用elseif来使代码更具可读性。

答案 2 :(得分:0)

对于部分匹配,尤其是不精确或松散匹配,您可能会发现fnmatch()函数有用