web-dev-qa-db-ja.com

PHPで正規表現を使用して空白、キャリッジリターン、ラインフィードを一致させる方法は?

PHPで正規表現を使用しています。私は次の文字列を持っています:

<img 
src="/files/admin/hotel_website.gif" alt="Go To The Hotel's Web 
Site" align="absmiddle" border="0" class="hotel_icon" />

この文字列には、復帰文字と改行文字が含まれます。

正規表現でhtml imgタグをIMGに置き換えたいのですが、上記のテキストでは機能しません。

文字列内の各文字をループし、ここにある16進表現を出力することで、これらの文字が含まれていることを発見しました( http://Pastebin.com/ViNdBsRV )。

これが私の正規表現です。

strip_tags(preg_replace('/^\s*<img\s*.*\/?>\s*$/i', '[IMG]', $test));

ヘルプに感謝します。

21
Mr B

この:

preg_replace("#<img.+?/>#is", '[IMG]', $test)

個人的には、正規表現を作成するとき、私は常に最短/最も簡単にしようとします。ここでは、 '<img'で始まり '/>'で終わるタグ全体を置換します。'.+? 'は欲張りでない(怠lazな)キャッチです。また、ケースの修飾子 'i'と.の 's'は、新しい行になる可能性があります。

欲張りと怠zyの詳細: http://www.regular-expressions.info/repeat.html
修飾子の詳細: http://www.php.net/manual/en/reference.pcre.pattern.modifiers.php

9
3on

[\n\r]+は新しい行に一致します。空白の場合は、[\n\r\s]+を追加します

58
Merianos Nikos

これは私にとってはうまくいきましたが、複数のスペースと複数行、他の文字や記号にも一致します。

[\S+\n\r\s]+

これが誰にも役立つことを願っています。

以下に一致します。

stpd  : asdfasdf
this is also matching ***
4
G Jeny Ramirez