php 空格拆分字符串,php – 从空格分隔的句子创建LIKE友好字符串

我想允许我的用户使用任何顺序的部分单词在数据库中搜索值,以便搜索到的字符串:

nan mu

将以任何顺序返回包含nan和mu的任何字符串.只有两位,使用array_filter()和this中的解决方案来创建字符串相当容易

%nan%mu%

%mu%nan%

这样mysql就会搜索那些.现在我有一个问题,当有两个以上的位,例如nan mu te.目的是获得这些字符串:

$string1 = %nan%mu%te%

$string2 = %nan%te%mu%

$string3 = %mu%nan%te%

$string4 = %mu%te%nan%

$string5 = %te%nan%mu%

$string6 = %te%mu%nan%

并使6个mysql LIKE条件WHERE字段LIKE $string1 AND字段LIKE $string2 …这样任何顺序的那三个位的任何可能性都将包含在结果中

对于那些即将抱怨sql注入的人,谢谢,但不,谢谢,我使用PDO和参数化查询.

我用string nan mu te的实际尝试:

class EstDefini

{private $STR;

function __construct($vSTR)

{$this->STR = $vSTR;}

function Verifier($vSTR)

{return !($vSTR == $this->STR);}}

$vString = 'nan mu te';

$aBits = explode(' ',$vString);

$vNb = count($aBits);

for ($i=0;$i

{$vAppend = implode('%',array_filter($aBits,array(new EstDefini($aBits[$i]),'Verifier')));

$aLiterals[$i] = '%' . $aBits[$i] . '%' . $vAppend;}

只返回3个字符串,因为我的初始计数只有三个(我的爆炸字符串有三位):(这是var_dump($aLiterals))

array(3) {

[0]=>

string(10) "%nan%mu%te"

[1]=>

string(10) "%mu%nan%te"

[2]=>

string(10) "%te%nan%mu"

}

我最初的想法是修改计数:

$vNb = $vNb * max($vNb-1,1);

并尝试将其他位移动以获得不同的LIKE友好字符串,但是由于我的初始$aBits数组仍然是3,所以这个类创建调用新的EstDefini($aBits [$i])将尝试访问未定义的位.

如何从空格分隔的单词创建LIKE友好字符串,目的是使用MySQL以任何顺序查找所有这些单词?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值