我需要比较两个字符串。在视觉上他们比较,但var_dump结果其他。请帮帮我。
string(8)“СИ.pdf” string(7)“CИ.pdf”
如何正确地比较他?
答案 0 :(得分:1)
使用mb_convert_encoding()将两个版本转换为合理的版本(例如UTF8),然后使用mb_strstr()进行比较。
答案 1 :(得分:0)
您的第一个字符串"СИ.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。
答案 2 :(得分:-1)
很可能字符串中有一些不可打印的字符
查看以下内容: PHP: How to remove all non printable characters in a string?