2012-05-23 11 views
6

私は本当になぜキリル文字のフォントで、部分文字列が "?"レンダリングされたhtmlのPHPの部分文字列と奇妙なアイコン

マイコード

$string1 = get_the_content(); 
$string = strip_tags($string1); 
$stringcutted = substr($string,0,150); 
$replacement = "..."; 
$final = substr($stringcutted, 0, -3).$replacement; 

そして、それをHTML

strange icon1 strange icon2

上の任意のソリューションをレンダリングする方法を見て?

答えて

3

PHPの文字列関数は、文字列に基づいているためバイト数。彼らは文字エンコーディングの知識がありません。あなたが非操作したい場合はmultibyte string functions

<?php 
$x = 'Подмосковные вечера'; 
print(strlen($x)."\n");  # 37, not 19 
print(substr($x,0,1)."\n"); # �, not П 
print(substr($x,0,2)."\n"); # П, not По 
?> 

ルック:だから、UTF-8、文字が複数のバイトを取ることができますのようなもので、それはあなたがそれをしたいと思うように動作しません。 -ASCIIテキスト。

0

文字エンコードをチェックアウトする必要があります。基本的には、1つの形式でエンコードされた文字列があり、それを別の形式で出力しています。

国際的なものの場合は、UTF-8を使用したいと思います。 - あなたのHTMLファイルに頭の中で追加してください(上部付近) - PHPで、すべての文字列をUTF-8として扱う場合 - データベースもある場合は、データベース、テーブル、およびフィールドがすべてUTF-8として設定されていることを確認してください(警告:この変更により、インポート/エクスポートなしでデータが破損することがあります。 )。 - 特殊文字を含むテンプレートファイルを読む場合は、それらがUTF-8であることも確認してください。 (特殊文字がない場合、通常のAscIIが行います)

これは簡単な答えです。文字エンコーディングについて読むことがたくさんあります.Googleだけです。

(代替ソリューション、ASCIIを使用していますが、ウェブフレンドリーな文字コードにすべてを変換します。しかし、それはユーザーの入力を扱う場合は特に、すべてのコードが権利を取得するトリッキーです。)

関連する問題