如何在PHP中使用正则表达式匹配空格、回车符和换行符?
我正在使用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标记,但这对上面的文本不起作用 通过循环字符串中的每个字符并打印出十六进制表示,我发现它包含这些字符
<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]+
是解决方案,因为
通常不匹配换行符。这场比赛本身没有多大用处。