7

ページにデータフィードを表示しようとしています。奇妙な文字でエンコードの問題が発生しています。どういうわけか、フィードにはU+FFFDキャラクターがいます。そしてhtmlentities()、キャラクターをエスケープしないので、手動で置き換える必要があります。(私はPHP 5.3を使用しています)

私は次のことを試しました:

$string = str_replace( "\xFFFD",  "_", $string );
$string = str_replace( "\XFFFD",  "_", $string );
$string = str_replace( "\uFFFD",  "_", $string );
$string = str_replace("\x{FFFD}", "_", $string );
$string = str_replace("\X{FFFD}", "_", $string );
$string = str_replace("\P{FFFD}", "_", $string );
$string = str_replace("\p{FFFD}", "_", $string );

上記のいずれも機能しません。

このページ( http://php.net/manual/en/regexp.reference.unicode.php )を読んだ後、何が間違っているのかわかりません。UTF-8サポートをPCREにコンパイルする必要がありますか?

4

2 に答える 2

10
于 2012-12-06T10:28:38.287 に答える
7

次のように代わりにpreg_replaceを使用します。

$string = preg_replace('@\x{FFFD}@u', '_', $string);
于 2012-12-05T16:06:32.763 に答える