質問
テスト時の回答のため 他のユーザーの問題 このようなかわからない.この問題に置き換えることは文字通り \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);
トリックを行う必要があります。
所属していません StackOverflow