PHP和十六进制值

时间:2017-11-07 19:54:19

标签: php mysql laravel-5

当我执行以下操作时:

$string = '19187044491';
$searchString = '\%'.$string.'\%';

我明白了:

dd($searchString);  // this is outputing '\187044491\%'

我已经明白这是因为'%19'是一个十六进制值(here)因此被PHP解释为这样。但是,我真的需要能够在数字字符串前加上'%'符号来搜索MySQL查询。我想尝试类似的东西:     选择.....其中数字如'%19187044491%'

我相信整个六角形的东西都会引起问题。我试过用反斜杠转义'%'符号,但似乎没有效果。应该怎么做才能让查询起作用?

1 个答案:

答案 0 :(得分:2)

情况应该不是这样。要记住的一件事是,在单引号内,反斜杠被字面处理,并且它们在双引号内只有特殊含义:

<?php
$string = '19187044491';
$searchString = '\%'.$string.'\%';
echo($searchString);
?>

由于使用了错误的引号,这产生了\%19187044491\%,这并不奇怪。由于%不是特殊的,除了URI上下文,一般不是PHP,你应该没问题:

<?php
$string = '19187044491';
$searchString = "%$string%";
echo($searchString);
?>

哪里给出了正确的结果。也许你的dd函数以某种方式错误地修改或解释数据。