繁体   English   中英

为什么用PHP中的mysql条目构造URL给我一个不同的String?

[英]Why is constructing a URL with a mysql entry in PHP giving me a different String?

我正在编写一些代码来查看PTO分配数据,并注意到一个奇怪的问题:当我从数据库条目生成URL时,URL不起作用,但是当我手动输入相同的字符串时,URL起作用了。 当我回显它们时,两个字符串看起来完全相同,但是当我将它们相等时,它们是不同的。 是否存在某种隐藏的字符或某些看不见的编码,如果存在,该如何解决? 我正在使用WAMPSERVER运行代码。

$pto = "assignments.uspto.gov/assignments/q?db=pat&reel=";
$row = mysql_fetch_assoc($result);

$ReelFrame = $row['ReelFrame'];       // Should be "007358/0006" and looks to be correct.
$reelframearray = explode("/",$ReelFrame);
$gourla = $pto . $reelframearray[0] . "&frame=". $reelframearray[1];
$gourl = "assignments.uspto.gov/assignments/q?db=pat&reel=007358&frame=0006";
echo "$gourla <br>";
echo "$gourl <br>";
if ($gourl === $gourla){
 echo "same string";
} else {
 echo "different";
}

结果如下所示:

assignments.uspto.gov/assignments/q?db=pat&reel=007358&frame=0006 
assignments.uspto.gov/assignments/q?db=pat&reel=007358&frame=0006 
different

我将其范围缩小到了mysql条目,因为用它替换了它:

$ReelFrame = "007358/0006";

使字符串相同。

谢谢你的帮助。 如果有任何区别,则ReelFrame的列为VARCHAR。

请尝试对两个变量都进行var_dump()而不是回显它们-可能存在一些前导/尾随空格,换行符或类似的东西。

编辑:仅作说明:您确实不应在一个数据库库中保存多个值。 如果ReelFrame由两个值组成,请在ReelFrame加上两个列: ReelFrame并且不要为此使用charchar,看起来它们应该是int(这样可以避免您意外地保存空格换行符或类似内容)

我想到的第一个想法是\\ n字符。

尝试这个:

$ReelFrame = trim($row['ReelFrame']);

我尝试了trim ()建议,但似乎不起作用。 我不确定要插入哪种字符,但是我想修剪并不能将其删除。

我刚刚尝试了var_dump,它确实显示了字符串的长度不同,尽管看起来没有什么不同。 ReelFrame实体的vardump与手动字符串相比:
string(20) "007358/0006"
string(11) "007358/0006"

同样对于最后一个字符串:
string(81) "assignments.uspto.gov/assignments/q?db=pat&reel=007358&frame=0006"
string(72) "assignments.uspto.gov/assignments/q?db=pat&reel=007358&frame=0006"

trim()似乎对实体没有任何影响,因此仍显示20。是否还有其他可能看不到的修剪字符?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM