当我执行以下操作时:
$string = '19187044491';
$searchString = '\%'.$string.'\%';
我明白了:
dd($searchString); // this is outputing '\187044491\%'
我已经明白这是因为'%19'是一个十六进制值(here)因此被PHP解释为这样。但是,我真的需要能够在数字字符串前加上'%'符号来搜索MySQL查询。我想尝试类似的东西: 选择.....其中数字如'%19187044491%'
我相信整个六角形的东西都会引起问题。我试过用反斜杠转义'%'符号,但似乎没有效果。应该怎么做才能让查询起作用?
答案 0 :(得分:2)
情况应该不是这样。要记住的一件事是,在单引号内,反斜杠被字面处理,并且它们在双引号内只有特殊含义:
<?php
$string = '19187044491';
$searchString = '\%'.$string.'\%';
echo($searchString);
?>
由于使用了错误的引号,这产生了\%19187044491\%
,这并不奇怪。由于%
不是特殊的,除了URI上下文,一般不是PHP,你应该没问题:
<?php
$string = '19187044491';
$searchString = "%$string%";
echo($searchString);
?>
哪里给出了正确的结果。也许你的dd
函数以某种方式错误地修改或解释数据。