回答
使用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