2017-06-21 18 views
1

こんにちは!PHP str_replaceは文字「°」を置き換えません

私が.xlsxのファイルから文字列を取得しています - >"N°X"

私は

$var = str_replace("N°","Num_",$var); 

しかし、何も私はこれを行うにしようとしていますNum_X

"N°"を交換したいと思います(echo $varによると)の問題は°に由来しています。その他 (°なし)str_replace works

ご意見はありますか?

+0

あなたが置き換えているのと同じキャラクターではありませんが、類似したキャラクターです。 – Barmar

+1

mb_str_replaceを試してください。ただし、ローカルで動作します。それはあなたがそれと思うものとは異なる文字でなければなりません – Ice76

+0

@ Ice76ローカルマシンでも試しましたが、うまくいくようです。 – ctwheels

答えて

0

入力文字列が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は今すぐ便利です。

+0

ユニコード[NUMERO SIGN](http://www.fileformat.info/info/unicode/char/2116/index.htm)文字(№)にも注意してください。 –

+0

私はいくつかの回答があれば私はいくつかの通知を得ると思った はい、私は$ var = mb_convert_encoding($ var、 "Windows-1252"、 "UTF-8")でした。それは動作します:) ありがとう –

関連する問題