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

如何在PHP中使用正则表达式匹配空格、回车符和换行符?,php,html,regex,whitespace,carriage-return,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标记,但这对上面的文本不起作用 通过循环字符串中的每个字符并打印出十六进制表示,我发现它包含这些字符

我正在使用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标记,但这对上面的文本不起作用

通过循环字符串中的每个字符并打印出十六进制表示,我发现它包含这些字符,可以在这里找到()

这是我的正则表达式:

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

感谢您的帮助。

[\n\r]+
将匹配新行。对于空白,请添加以下内容:

preg_replace("#<img.+?/>#is", '[IMG]', $test)
preg#u replace(“##is”,“[IMG]”,$test)
就我个人而言,当我制作正则表达式时,我总是尝试使用最短/最简单的方法。 在这里,您要替换以“
”开头的整个标记,“
+?
”是一个非贪婪(惰性)捕获。 对于修饰符“
i
”和“
s
”到
”的情况,可能是一个新行

关于贪婪与懒惰的更多信息:

关于修改器的更多信息:

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

[\S+\n\r\s]+
希望这对任何人都有帮助

它匹配例如:

stpd  : asdfasdf
this is also matching ***

我将此添加到正则表达式中,但它不起作用;'/^\s*\s*$/i“不要忘记,要使其生效,必须使用带引号的解释字符串!”只会产生文字。如果我只需要CRLF空间,表达式应该是什么?@SankalpKotewar我觉得你需要同样的空间。我没有测试它,但是
\n
代表
LF
\r
代表
CR
,(至少我希望我没有错。)。您是否仅使用了
[\n\r]
?能否向我展示您希望从起始字符串开始的字符串?这与预期一样有效,感谢您的全面解释。我稍微调整了一下以适应其他情况:/\s*$/is@Sid您不需要添加
\s$
我的解决方案已经可以替换整个页面上的
(这就是我测试正则表达式的方式)。我添加了$,因为我从数据库表中获取html字符串。将
+
放入
[]
中可以使它与文字加符匹配
\S
\S
相反,因此基本上可以匹配任何字符
[\s\s]+
是解决方案,因为
通常不匹配换行符。这场比赛本身没有多大用处。