ホームページ > バックエンド開発 > PHPチュートリアル > PHP正規表現でrnと一致するにはどうすればよいですか?

PHP正規表現でrnと一致するにはどうすればよいですか?

WBOY
リリース: 2016-06-23 13:11:20
オリジナル
1772 人が閲覧しました

たとえば、このような小さな文字列 rn
(\r\n)+ を一致させるにはどうすればよいでしょうか?


ディスカッションへの返信 (解決策)

"/[rn]+/" は二重引用符で囲む必要があります。そうしないと、rn は ,r,,n として解釈されます

または'/[x0dx0a]+/'

確かに可能ですが、私が遭遇した問題は次のとおりです:

この文字列には rn などの改行が含まれています。とそのままブラウザに出力されるので、preg_replace を使ってこの 2 文字を
に置き換えたいのですが、この 2 文字は "/(\ r\n) のように抽出できません。 +/" または置換は、あなたが言ったように、一致できません。データベースに入力されるときに文字列がエスケープされています。モデレーターにこの理由を説明していただけますか。ありがとうございます

"/[rn]+/" は二重引用符で囲む必要があります。そうしないと、rn は 、r、、n として解釈されます

または '/[x0dx0a]+/'

別の文字を作成しました文字列テストを試してみましたが、確かに可能ですが、問題は次のとおりです。
データベースから文字列を取り出したのですが、この文字列にはrnのような改行文字が含まれており、そのままブラウザに出力されてしまいます。 preg_replace を使用して、これら 2 つの文字を
に置き換えたいのですが、どうやっても、これらの 2 つの文字を「/(\r\n)+/」のように、またはあなたが言ったように置き換えることはできません。一致できません。データベースに入力されるときに文字列がエスケープされています。モデレーターにその理由を説明していただけますか。ありがとうございます
echobase64_encode (データベースから直接抽出したコンテンツ);

結果を投稿します

リダイレクト

php はこれを行う nl2br 関数を提供します

echo base64_encode(you Contentデータベースから直接のみ);

結果を投稿する

Transfer

php はこれを行うために使用される nl2br 関数を提供します


nl2br は試行されましたが、エスケープされているため効果はありません\r\n
str_replace("\r\n","
",$string); を使用したところ、正常に置き換えられ、要件を満たすことができました。
base64_encodeの出力結果:
W3NpemU9MjBdMjBweOeahOWtl+S9k1svc2l6ZV1cclxuW2Jd5paH5a2X5Yqg57KXWy9iXVxyXG5baV3lgL7mlpxbL2ldXHJcblt1XeS4i+WIkue6v1 1cclxuW3Nd5Lit5YiS57q/Wy9zXVxyXG5bY29sb3I9I2YwMF3nuqLoibJbL2NvbG9yXVxyXG5bdXJsXWh0dHA6Ly93d3cuMTYzLmNvbVsvdXJsXVxyXG5bZW1haWxdcmV kXzAyNkAxN jMuY29tWy9lbWFpbF1cclxuW2ltZ11xcGljLzMvMzAuZ2lmWy9pbWdd

$s = 'W3NpemU9MjBdMjBweOeahOWtl+S9k1svc2l6ZV1cclxuW2Jd5paH5a2X5Yqg57KXWy9iXVxyXG5baV3lgL7mlpxbL2ldXHJcblt1XeS4i+WIkue6v1svdV1cclxuW3Nd5Lit5YiS57q/Wy9zXVxyXG5bY29sb3I9I2YwMF3nuqLoibJbL2NvbG9yXVxyXG5bdXJsXWh0dHA6Ly93d3cuMTYzLmNvbVsvdXJsXVxyXG5bZW1haWxdcmVkXzAyNkAxNjMuY29tWy9lbWFpbF1cclxuW2ltZ11xcGljLzMvMzAuZ2lmWy9pbWdd';$s = base64_decode($s);echo nl2br(stripcslashes($s));
ログイン後にコピー
ログイン後にコピー
20px的字体<br /><strong>文字加粗</strong><br />倾斜<br />下划线<br />中划线<br />[color=#f00]红色[/color]<br />http://www.163.com<br />red_026@163.com<br />
ログイン後にコピー
ログイン後にコピー

$s = 'W3NpemU9MjBdMjBweOeahOWtl+S9k1svc2l6ZV1cclxuW2Jd5paH5a2X5Yqg57KXWy9iXVxyXG5baV3lgL7mlpxbL2ldXHJcblt1XeS4i+WIkue6v1svdV1cclxuW3Nd5Lit5YiS57q/Wy9zXVxyXG5bY29sb3I9I2YwMF3nuqLoibJbL2NvbG9yXVxyXG5bdXJsXWh0dHA6Ly93d3cuMTYzLmNvbVsvdXJsXVxyXG5bZW1haWxdcmVkXzAyNkAxNjMuY29tWy9lbWFpbF1cclxuW2ltZ11xcGljLzMvMzAuZ2lmWy9pbWdd';$s = base64_decode($s);echo nl2br(stripcslashes($s));
ログイン後にコピー
ログイン後にコピー
20px的字体<br /><strong>文字加粗</strong><br />倾斜<br />下划线<br />中划线<br />[color=#f00]红色[/color]<br />http://www.163.com<br />red_026@163.com<br />
ログイン後にコピー
ログイン後にコピー


ありがとうございました!
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート