正则表达式检测换行符

时间:2014-08-05 01:19:07

标签: php regex

我有这条消息(没有引号,只是为了准确):

"hey, here i am<br /><br />
 "

注意换行后的空格。所以这就是事情:我试图删除所有隐形字符和消息的<br />,所有这些都在消息的末尾,用正则表达式来表示“嘿,我在这里” 。但我必须做错事,因为我不能让它发挥作用。这就是我的尝试:

$content = preg_replace('{(<br(\s*/)?>|&nbsp;|\r\n|\r|\n| )+$}i', '', $content);

但最后的消息仍然相同。一定是我错过的简单。谢谢你的帮助!

5 个答案:

答案 0 :(得分:3)

您不需要正则表达式来执行此操作。使用strip tags功能删除标签。

$str = 'hey, here i am<br /><br />';
echo strip_tags($str);//yields hey, here i am

当您拥有已经执行过的工具时,不要尝试编写自己的正则表达式来解析HTML。有时根据情况需要,但在你的情况下我会说它不是。只需使用内置功能。<​​/ p>

答案 1 :(得分:1)

您不应该使用正则表达式来执行您想要的操作。看一下这个答案:RegEx match open tags except XHTML self-contained tags

而是使用strip_tags()

答案 2 :(得分:1)

您可以使用以下正则表达式:

([^\s\w",](?:br\W*\s*)+)"$

<强> Working demo

enter image description here

代码是:

$re = "/([^\\s\\w\\",](?:br\\W*\\s*)+)\\"$/"; 
$str = "\"hey, here i am<br /> test<br /><br />\n \""; 
$subst = ''; 

$result = preg_replace($re, $subst, $str);

答案 3 :(得分:0)

$str = 'hey, here i am<br /><br />';
$str=~s{(<br />|\s)*$}{}ig;

使用此代码可能会对您有所帮助

答案 4 :(得分:0)

my $cnt;    
$cnt = "hey, here i am<br /><br />";
    $cnt =~s/(<br \/>)*//isg;
print $cnt;
 output : "hey, here i am"