我在調試字符串比較時遇到了很奇怪的經歷。 從函數(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個多餘的字符。 我找不到任何方式打印出來..
'的var_dump($ menu_link)' –
@u_mulder var_dumps給串......但可疑的長度: 'string(51)「https://www.domain12.com/catering-services」'有9個不顯示的字符,如果這是正確的。 –
因此,現在是時候瞭解這些符號來自哪裏。 –