2017-09-15 59 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