こんにちは!PHP str_replaceは文字「°」を置き換えません
私が.xlsxのファイルから文字列を取得しています - >"N°X"
私は
$var = str_replace("N°","Num_",$var);
しかし、何も私はこれを行うにしようとしていますNum_X
で"N°"
を交換したいと思います(echo $var
によると)の問題は°
に由来しています。その他 (°
なし)str_replace works
ご意見はありますか?
こんにちは!PHP str_replaceは文字「°」を置き換えません
私が.xlsxのファイルから文字列を取得しています - >"N°X"
私は
$var = str_replace("N°","Num_",$var);
しかし、何も私はこれを行うにしようとしていますNum_X
で"N°"
を交換したいと思います(echo $var
によると)の問題は°
に由来しています。その他 (°
なし)str_replace works
ご意見はありますか?
入力文字列がUTF8であることを確認してください。
$var = "N°X";
print mb_detect_encoding($var);
あなたは、このうちUTF-8
を取得し、それを変換しない場合:
$var = mb_convert_encoding($var, 'UTF-8');
そして、意図したとおりに、あなたのstr_replace
が動作します。
エンコードの問題に役立つもう1つのツールはxxd
です。
php -r '$var = "N°X"; echo $var;' | xxd
中間文字が Unicode文字 'DEGREEのSIGN'(U + 00B0)はC2B0ヘクス、としてエンコードされ明らか
00000000: 4ec2 b058 N..X
を返すべきです。 fileformat.infoは今すぐ便利です。
ユニコード[NUMERO SIGN](http://www.fileformat.info/info/unicode/char/2116/index.htm)文字(№)にも注意してください。 –
私はいくつかの回答があれば私はいくつかの通知を得ると思った はい、私は$ var = mb_convert_encoding($ var、 "Windows-1252"、 "UTF-8")でした。それは動作します:) ありがとう –
あなたが置き換えているのと同じキャラクターではありませんが、類似したキャラクターです。 – Barmar
mb_str_replaceを試してください。ただし、ローカルで動作します。それはあなたがそれと思うものとは異なる文字でなければなりません – Ice76
@ Ice76ローカルマシンでも試しましたが、うまくいくようです。 – ctwheels