1

メッセージに特定の文字のみを許可する正規表現があります。私が達成しようとしているのは、 nl2br関数を使用して保持される改行も許可することです。

それは私がこれまで持っているものです:

preg_replace('/[^a-zA-Z0-9ńśćółęążź\ .,-]/','',$message)

私が確認した限り、次の式は改行を保持するはずですが、上記の式に追加する際に問題が発生しています:

/(\r|\n|\r\n){2,}/
4

2 に答える 2

3

置換しない文字のリストに\r&を追加するだけです。\nそう:

preg_replace("/[^a-zA-Z0-9ńśćółęążź\ \.,\-\r\n]/",'',$message)

上記の式では、 &が認識さ'れるように "も変更する必要がありましたが、 andの文字もエスケープする必要がありました。\r\n.-

于 2013-02-21T09:39:18.563 に答える
1

これがあなたが探しているものだと思います。

  • preg_quoteを使用して、「。」などの特定の文字をエスケープすることを忘れないようにします。あなたの表現で。私はそれがほとんどそれを壊したと確信しています。
  • a-zA-Zの代わりに、大文字と小文字を区別しない「i」修飾子を使用します
  • ロスが言ったように、\rと\nを追加します

print preg_replace('/'。preg_quote('[^a-z0-9ńśćółęążź\。、-\ r \ n])')。'/ i'、''、 "test \ r \ ntest \ rtest \ ntest");

于 2013-02-21T09:56:07.160 に答える