2012-05-08 8 views
0

特定の文字をそのエンティティに置き換えようとするのは本当に苦労しています。私は文字 "ā"をstr_replaceしようとしましたが、それはうまく動作しません!なぜ私は見ることができません。私が使用しているコード:文字をそのHTMLエンティティに置き換えてくださいā

$content = str_replace('ā', 'ā',$content); 

誰かがヒントや、それがうまくいかない理由についての説明があれば、私に教えてください!

UPDATE:上記のコードは、エンティティと文字を置き換えるものではありません

ながら(理由を理解していない)主な問題ではありません。キャラクターは上手く表示されますが、このページをfile_get_contentsで読み込んだ後、読み込んだHTMLをデータベースに挿入すると、キャラクターはマングルされます。それはすでにそれが挿入されたデータベースでは、混乱しています。

すべてのヘッダー以下の提案としては、UTF-8は、データベーステーブルがUTF-8エンコーディングを持っている、ファイルはUTF-8です...

私はへの挿入前のエンティティに文字を変換したいクイックフィックスとして、そのDB。

+2

なぜHTMLエンティティの代わりにUTF8を使用しないのですか? – ThiefMaster

+0

これを試してください:http://snipress.wordpress.com/2011/08/29/str_replace-equivalent-for-multi-byte-string-like-utf-8/ –

+0

見てくださいhttp://stackoverflow.com/質問/ 3959626/replace-unicode-character – CyprUS

答えて

1

このお試しください:DBへのすべての接続で 試してみてください:

これは <?php

UPDATE後にあなたのページの右側に、このコードを配置し、UTF8して、ページの表示、すべての法的な文字を行いますheader('Content-Type: text/html; charset=utf-8');

$connect = YOUR_MYSQL_CONNECTION(); mysql_query("SET NAMES 'utf8';" , $connect); mysql_query("SET CHARACTER SET 'utf8';" , $connect); 
+0

すべてがUTF-8ですが、それでも問題はあります。 – tvgemert

+0

すべてUTF-8とは?既にこのヘッダーを送っていますか? –

+0

あなたのコードのどの部分がUTFのすべてを表していますか? –

1

大きな文字列には簡単にアクセスできますか?その場合は、htmlentities関数がその作業を行う必要があります。それは、同等のものと同等のHTMLを持つすべての文字を変換する必要があります。ただし、<のようなものを&lt;に変換します。

+0

...ありがたいですが、私はhtmlentitiesが何をしているかをよく知っています、それはポイントではありません。私は完全になぜこの特定の状況では動作しません困惑しています。 – tvgemert

+0

申し訳ありませんが、混乱してしまいました。だから、str_replaceは必ずしもマルチバイトではないことを示唆している他にもいくつか質問があります。 [この質問](http://stackoverflow.com/questions/1451144/php-multi-byte-str-replace)は、何か類似しているようです。キャラクターがデータベースに混乱していると言ったら、どういう意味ですか? – chooban

関連する問題