今天遇到一個神奇的BUG
string(4) "0"
string(1) "0"
列印了兩個0(以0舉列,任何字串都有可能)發現長度不一致,這導致PHP陣列出現了兩個相同的key,肉眼看著是相同的,但其實計算機看不是。
我們編碼後看看
string(9) ""0\u200b""
string(3) ""0""
看見沒有,第一個後面多了\u200b
。網上查了很多資料說是一個空白字元。理論上拿這個可以在遊戲中拿到重複ID。如果沒有過濾的話。
處理方法
trim($str, '\xe2\x80\x8b');
trim($str, '\xe2\x80\x8c');
trim($str, '\xe2\x80\x8d');
著急讓大家避坑,文章沒仔細梳理。
參考文章 特殊字元<200b><200c><200d>的刪除辦法與原理
本作品採用《CC 協議》,轉載必須註明作者和本文連結