回答
使用mb_convert_encoding()將兩個版本轉換爲合理的值(例如UTF8),然後使用mb_strstr()進行比較。
Thx! mb_convert_encoding($ fileName)=== mb_convert_encoding($ item-> getName())爲我工作 –
這是不好的答案 – Deadooshka
真的嗎?爲什麼?它適用於OP。你有更好的建議嗎? – mayersdesign
最有可能有一些非打印字符字符串
看看下面的: PHP: How to remove all non printable characters in a string?
你的第一個字符串,"СИ.pdf"
,採用Cyrillic capital letter Es而第二,"CИ.pdf"
,有Latin capital letter C。這些是homoglyphs,並且檢查它們的一種方式是使用Spoofchecker::areConfusable()
,例如,
$a = "СИ.pdf";
$b = "CИ.pdf";
var_dump(
$a === $b,
(new Spoofchecker())->areConfusable($a, $b)
);
輸出:
bool(false)
bool(true)
Spoofchecker是PHP的intl extension這對ICU庫的包裝。 ICU的欺騙檢查基於Unicode Technical Report #36和Unicode Technical Standard #39。
- 1. PHP不能比較兩個「字符串」
- 2. php比較兩個密碼字符串
- 3. 比較兩個名稱字符串php
- 4. 比較兩個PHP字符串
- 5. 比較兩個字符串[]
- 6. 比較兩個字符串?
- 7. 比較兩個字符串
- 8. PHP比較兩個字符串,並基於字符串
- 9. C++比較兩個字符串文字
- 10. 比較兩個數字字符串值
- 11. 比較兩個字符串由字母
- 12. 比較兩組字符串
- 13. 比較字符串兩場
- 14. 比較PHP兩個字符串,並顯示字符差異
- 15. 逐字比較.NET中兩個字符串的比較
- 16. 比較兩個XML字符串
- 17. 比較兩個字符串與Android
- 18. 兩個字符串然後比較
- 19. 比較兩個寬字符串visual C++
- 20. Java excel - 比較兩個字符串
- 21. 比較兩個字符串的含義
- 22. lex yacc比較兩個字符串
- 23. 比較兩個字符串C#?
- 24. 如何比較兩個w_char []字符串
- 25. 比較ruby中的兩個字符串
- 26. 比較兩個字符串,刪除
- 27. 比較C++中的兩個字符串
- 28. 比較兩個字符串列表.CSV
- 29. 如何比較兩個字符串
- 30. 在python中比較兩個字符串
最有可能的字符串是在不同的編碼。你將不得不找出原因,以便將來可以防止這種事情發生。不_搜索一些自動編碼轉換,_不會工作。如果你想了解你所看到的,使用'hexeditor'。 – arkascha
你必須['setlocale'](http://php.net/manual/en/function.setlocale.php) – Deadooshka