我有这条消息(没有引号,只是为了准确):
"hey, here i am<br /><br />
"
注意换行后的空格。所以这就是事情:我试图删除所有隐形字符和消息的<br />
,所有这些都在消息的末尾,用正则表达式来表示“嘿,我在这里” 。但我必须做错事,因为我不能让它发挥作用。这就是我的尝试:
$content = preg_replace('{(<br(\s*/)?>| |\r\n|\r|\n| )+$}i', '', $content);
但最后的消息仍然相同。一定是我错过的简单。谢谢你的帮助!
答案 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 强>
代码是:
$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"