4

以下に小さな例を示します (ダウンロードし、名前を .php に変更して、シェルで実行します)。

test.txt

preg_replace元の文字列ではなく NULL を返すのはなぜですか?

\x{2192}→HTML の " " ("→")と同じです。

4

4 に答える 4

5

u 正規表現にUTF-8 PCRE 修飾子が含まれていると、null 応答がありました。ソース テキストがUTF でなく、この修飾子がある場合、null の結果が得られます。

于 2013-08-29T14:20:51.330 に答える
-1
  • 一重引用符を使用しています。つまり、エスケープできるのは他の一重引用符だけです。エスケープ シーケンスを有効にするには (例:\x32二重引用符 "" を使用)
  • 私は UTF8 の専門家ではありませんが、エスケープ コード\x2192も正しくありません。あなたができること:\x21\x92両方のバイトを文字列に入れることができますがutf8_encodeutf8_decode
  • ソース文字列に無効な文字が含まれているか、何かが含まれています。PHP の出力: 警告: preg_replace(): コンパイルに失敗しました: 7 行目の test.php のオフセット 0 にある無効な UTF-8 文字列
于 2009-09-18T00:56:38.463 に答える
-3

あなたの正規表現にも誤りがあると思います:~\x{2192}~u

私が持っているものを置き換えてみて、それがうまくいくかどうかを確認してください:/\x{2192}/u

于 2009-09-16T21:35:59.220 に答える