1

UTF のユーロのマルチバイト文字 (html では ⬠として表示) を「$」に​​、* を「@」に preg_replace しようとしています。

$orig = "2 **** reviews  ⬠19,99 price";
$orig = mb_ereg_replace(mb_convert_encoding('€', 'UTF-8', 'HTML-ENTITIES'), "$", $orig);
$orig = preg_replace("/[\$\;\?\!\{\}\(\)\[\]\/\*\>\<]/", "@", $orig);
$a = htmlentities($orig);
$b = html_entity_decode($a);

「*」は置き換えられますが、「â¬」は置き換えられません.......

また、それを置き換えようとしました

$orig = preg_replace("/[\xe2\x82\xac]/", "$", $orig);

どちらも変換されません....

うまくいかなかった別の計画:

$orig= mb_ereg_replace(mb_convert_encoding('&#x20ac;', 'UTF-8', 'HTML-ENTITIES'), "$", $orig);

誰かがこの utf8 ユーロ文字を取り除く方法を知っています:

echo html_entity_decode('&euro;');

(私を狂わせる)

4

3 に答える 3

4

これは、次の2つの理由で発生する可能性があります。

  1. 実際のソーステキストはUTF8でエンコードされていますが、PHPコードはエンコードされていません。この行を使用して、UTF8でエンコードされたファイルを保存するだけでこれを解決できます(notepad ++を使用してみてください)。

    str_replace('€'、'$'、$ source);

  2. ソーステキストが破損しています。マルチバイト文字がlatin1に変換されます(データベースの文字セットが間違っていますか?)。それらをlatin1に戻すことができます。

    str_replace('€'、'$'、utf8_decode($ source))

于 2012-06-21T19:14:49.443 に答える
0

あなたがそれをマークできるように、ここに私のコメントを答えとして貼り付けてください!

しません

str_replace(html_entity_decode('&euro;'), '$', $source)

仕事?

于 2012-06-21T18:23:44.587 に答える
0
于 2012-10-20T16:32:36.630 に答える