比较两个字符串PHP

时间:2017-03-26 10:18:57

标签: php string

我需要比较两个字符串。在视觉上他们比较,但var_dump结果其他。请帮帮我。

string(8)“СИ.pdf” string(7)“CИ.pdf”

如何正确地比较他?

3 个答案:

答案 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 #36Unicode Technical Standard #39

答案 2 :(得分:-1)

很可能字符串中有一些不可打印的字符

查看以下内容: PHP: How to remove all non printable characters in a string?