如何在PHP中使用正则表达式匹配空格,回车和换行?

时间:2011-09-23 10:55:00

标签: php html regex whitespace carriage-return

我正在使用PHP中的正则表达式。我有以下字符串:

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

此字符串包含回车符和换行符。

我希望我的正则表达式用IMG替换html img标签,但这不适用于上述文本。

我发现它包含了这些字符,循环遍历字符串中的每个字符并打印出可在此处找到的十六进制表示(http://pastebin.com/ViNdBsRV)。

这是我的正则表达式:

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

感谢帮助。

3 个答案:

答案 0 :(得分:54)

[\n\r]+将匹配新行。对于空格,请添加[\n\r\s]+

答案 1 :(得分:9)

此:

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

就个人而言,当我正常表达时,我总是尽量做到最短/最简单。 在这里,您要替换整个标记,该标记以“<img”开头,以“/>”结尾,“.+?”是非贪婪(懒惰)捕获。 对于案例的修饰符“i”和“s”到.的修饰符可能成为新行。

更多关于贪婪与懒惰的信息:http://www.regular-expressions.info/repeat.html
有关修饰符的更多信息:http://www.php.net/manual/en/reference.pcre.pattern.modifiers.php

答案 2 :(得分:4)

这对我有用,它可以匹配多个空格和多行,也可以匹配任何其他字符或符号。

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

希望这有助于任何人。

匹配例如:

stpd  : asdfasdf
this is also matching ***