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

Mr *_*r B 22 html php 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" />
Run Code Online (Sandbox Code Playgroud)

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

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

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

这是我的正则表达式:

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

感谢帮助.

Mer*_*kos 60

[\n\r]+将匹配新线.对于白色空间添加[\n\r\s]+


3on*_*3on 10

这个:

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

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

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


G J*_*rez 5

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

[\S+\n\r\s]+
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助任何人。

它匹配例如:

stpd  : asdfasdf
this is also matching ***
Run Code Online (Sandbox Code Playgroud)

  • 将 `+` 放在 `[]` 内使其匹配文字加号。`\S` 与 `\s` 相对,所以你基本上可以匹配任何字符。`[\s\S]+` 是解决方案,因为 `.` 不*通常*匹配换行符。这场比赛本身没有多大用处。 (10认同)