2017-09-15 58 views
1

我在调试字符串比较时遇到了很奇怪的经历。 从函数(Magento getCategoryUrl()) 生成的链接,但无法将其与其“打印”版本匹配;比较URL字符串时隐藏的字符

我尝试了所有可能的字符串比较选项,并且转义原始字符串。最后,使用strpos我发现问题出现在第一个“h”或之前。

$menu_link = $this->getMenuLink($cat_id) 
echo $menu_link; // https://example.com/cat_1 

if($menu_link == "https://example.com/cat_1"){...} // false 
if($menu_link === "https://example.com/cat_1"){...} // false 
if("https://example.com/cat_1" == $menu_link){...} // false 

if(strcmp($menu_link , "https://example.com/cat_1") == 0){...} // false 
if(strcasecmp($menu_link , "https://example.com/cat_1") == 0){...} // false 

//Sanity Check ... 
if("https://example.com/cat_1" == "https://example.com/cat_1"){...} //true.. 

$menu_link = "". trim($menu_link); // no effect 
if($menu_link === "https://example.com/cat_1"){...} // false 

if(strpos($menu_link , "https://example.com/cat_1")){...} //false 

// ONLY THIS WORKS ?! 
if(strpos($menu_link , "ttps://example.com/cat_1")){...} //true 

仍然无法解释为什么会发生这种情况。

UPDATE
作为@u_mulder建议我尝试过的var_dump,它gives string(51) ...但长度是不正确的,有9个多余的字符。 我找不到任何方式打印出来..

+1

'的var_dump($ menu_link)' –

+0

@u_mulder var_dumps给串......但可疑的长度: 'string(51)“https://www.domain12.com/catering-services”'有9个不显示的字符,如果这是正确的。 –

+0

因此,现在是时候了解这些符号来自哪里。 –

回答

2

$menu_link在开始和$meny_link其他地方:)

+0

谢谢,这只是一个例子,而不是实际的代码 –

+0

@ d.raev:你可以用'trim()'作为'trim($ menu_link)'来尝试吗? – C2486