比较2个完全相同的字符串返回false
我有一个是通过HTML表单提交的变量:比较2个完全相同的字符串返回false
$_POST['ref']
而且一个变量,从表中数据库中抽取:
$row['ref']
我有一个基本的比较脚本来检查,如果他们都是一样的:
$ref = $_POST['ref'];
$result = mysql_query("SELECT * FROM logbook.job");
if (!$result) {
die("Query to show fields from table failed");
}
$row = mysql_fetch_array($result);
$refdb = $row['ref'];
$refform = $_POST['ref'];
echo $_POST['ref'] ."<br>". $row['ref'] . "<br><br>";
if ($refdb == $refform) {
echo "Yes they are<br><br>";
}
else {
echo "No they are not<br><br>";
}
if (is_string($_POST['ref']))
{
echo "Yes";
} else {
echo "No";
}
echo "<br>";
if (is_string($row['ref']))
{
echo "Yes";
} else {
echo "No";
}
,输出:
G2mtxW
G2mtxW
No they are not
Yes
Yes
我呼应他们俩。比我问他们是否一样。然后我检查每个是否是一个字符串。
他们怎么不一样?我怎样才能让他们匹配
任何帮助,将不胜感激
尝试var_dump
-ing两个值,检查它们的长度,并使用查看源代码检查它们。在某些方面它们是不同的。
尝试使用弦乐二进制安全比较:
result = strcmp($str1, $str2);
如果结果为0,那么两者是相同的。否则,他们不是。
这就是解决方案!谢谢! –
应该是被接受的答案! – 3zzy
您的一个字符串(可能是来自DB的字符串)可能以null结尾。我测试了以下
$foo = "abc\0";
$bar = "abc";
echo "$foo\n$bar\n";
if($foo == $bar)
echo "Equal.";
else
echo "Not equal."
输出是
abc
abc
Not equal.
谢谢!它帮助我认识到我的字符串包含一个空字符。我使用'strip_tags'将其删除,如此处的评论所示:http://stackoverflow.com/a/642475/587594 – Clawsy
是否有空格的任何变量? – Sjoerd
没有它只是G2mtxW – SebastianOpperman
只是为了验证,你可以给每个echo'd字符串添加一个'*'吗? –