2011-01-15 11 views
0

&をアンパサンドに変換するには、このPHP snippetを使用する必要があります。 Paul Dixonが書いたのとまったく同じテストコードを使用していますが、コード内でアンパサンドは置き換えられません。どうして?私はPHP 5.2.6を使用しています。なぜこのアンパサンドと一致する正規表現は機能しませんか?

$str_fix = preg_replace('/&(?!#?[a-z0-9]+;)/', '&', $str); 

以下、(それも&&を置き換えます)シンプルなしかし間違った正規表現作品:

$str_fix = preg_replace('/&/', '&', $str); 

EDIT:Damnit、問題は正規表現/ PHP関連しているがDrupalのではありません!はい、Drupalモジュールでこのスニペットを使用していますが、何らかの理由でDrupalが&&に変換しています。

+0

失敗した '$ str'の例を投稿してください。私にはうまくいくようです。 –

+0

私はそれを言うでしょう。そして私は正規表現の問題を見ることができません。 '$ str_fix'の代わりに' $ str'をチェックすることは可能ですか? – mario

+0

この質問に対する回答を見つけましたか? – 23inhouse

答えて

0

str_replace( '&'、 '& amp;'、$ str)の使用はどうですか?

+0

既存のものと&を置換するだけでは不十分です。& – mmersz

0

入力文字列の例を教えてください。 Drupalはあなただけの二重のエンティティをエスケープすることができます&&を交換した場合

echo preg_replace('/&(?!#?[a-z0-9]+;)/', '&', "Dogs & Cats & budgies\n"); 

は正しく

Dogs & Cats & budgies 
0

を生成します。

$str_fix = preg_replace('/&(?!#?[a-z0-9]+;)/', '&', $str); 

次に、あなたの希望の結果だったのDrupalが出力されます&を。

関連する問題