私は2つの文字列を比較する必要があります。視覚的に比較しますが、var_dumpの結果はotherです。お願い助けて。彼を比較する方法正しい2つの文字列を比較するPHP
文字列(8) "СИ.pdf" 文字列(7) "CИ.pdf"
?
私は2つの文字列を比較する必要があります。視覚的に比較しますが、var_dumpの結果はotherです。お願い助けて。彼を比較する方法正しい2つの文字列を比較するPHP
文字列(8) "СИ.pdf" 文字列(7) "CИ.pdf"
?
mb_convert_encoding()を使用して両方のバージョンを適切なもの(たとえばUTF8)に変換し、mb_strstr()を使用して比較します。
Thx! mb_convert_encoding($ fileName)=== mb_convert_encoding($ item-> getName())は私のために働く –
それは悪い回答 – Deadooshka
本当ですか?どうして?それはOPのために働いた。お勧めするものがありますか? – mayersdesign
は、最も可能性の高い
チェックアウト次の文字列にいくつかの非印字可能な文字があります。第二、"CИ.pdf"
は、Latin capital letter Cを有している がPHP: How to remove all non printable characters in a string?
あなたの最初の文字列、"СИ.pdf"
は、Cyrillic capital letter Esを使用しています。これらはhomoglyphsであり、確認する方法はSpoofchecker::areConfusable()
です。
$a = "СИ.pdf";
$b = "CИ.pdf";
var_dump(
$a === $b,
(new Spoofchecker())->areConfusable($a, $b)
);
出力:
bool(false)
bool(true)
ほとんどの場合、文字列は異なるエンコーディングになっています。それがなぜ起こっているのかを知る必要があるので、将来そのようなことを防ぐことができます。自動エンコーディング変換を_ _ _検索しないでください_、うまくいきません。見えるものを理解したい場合は 'hexeditor'を使います。 – arkascha
['setlocale'](http://php.net/manual/en/function.setlocale.php) – Deadooshka