質問

テスト時の回答のため 他のユーザーの問題 このようなかわからない.この問題に置き換えることは文字通り \t \n \r 文字から文字列で単一空間です。

今、最初のパターンをした:

/(?:\\[trn])+/

驚くなかった。また、同じパターンPerlでの現代美術館などがあります。かかるPHPい3または4バックスラッシュとマッチするパターンのサーチしてみました

/(?:\\\\[trn])+/

または

/(?:\\\[trn])+/

これらのパターンのとき、驚いたことも。なぜこれらのパーミッションは必要ですか?

役に立ちましたか?

解決

必要な4バックスラッシュを代表する1正規表現するためには、多くの

  • 2バックスラッシュを使用unescaping文字列("\\\\" -> \\)
  • 1バックスラッシュを使用unescapingの正規表現エンジン\\ -> \)

からPHPのdoc

脱出その他の文字のバックスラッシュが印刷されているもの1

そのために \\\[,

  • 1バックスラッシュを使用unescapingの \, 一泊で \[ は無効"\\\[" -> \\[)
  • 1バックスラッシュを使用unescapingの正規表現エンジン\\[ -> \[)

ありではないかと思います。

他のヒント

Perlでその作品を使用すると、正規表現のパターン/(?:\\[trn])+/

として直接それを渡すために

しかし、PHPで、あなたがそう余分なバックスラッシュ自身のためにエスケープ必要な、文字列として渡す必要があります。

"/(?:\\\\[trn])+/"
  シングルに合わせて、

正規表現\   バックスラッシュ「/ \\\\ / A」としてなります    PHPプリプレグ文字列

正規表現のちょうど/(?:\\[trn])+/。あなたは同様に、文字列の宣言でバックスラッシュをエスケープする必要があるためしかし、各バックスラッシュは\\で表現されている必要があります:

"/(?:\\\\[trn])+/"
'/(?:\\\\[trn])+/'
PHPは、エスケープシーケンス\[を知っているし、それを無視していないため、

わずか3バックスペースも仕事をします。 \\\なることがありますが、\[\[を滞在するようにします。

使用str_replace!

$code = str_replace(array("\t","\n","\r"),'',$code);

トリックを行う必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top