Php 正则表达式检测换行符

Php 正则表达式检测换行符,php,regex,Php,Regex,我有这个信息(没有引用,只是为了准确): “嘿,我来了 " 请注意换行符后的空白。事情是这样的:我正试图删除所有不可见的字符和消息的,所有这些字符都在消息的末尾,用一个正则表达式来表示“嘿,我在这里”。但我必须做些错事,因为我不能让它工作。这就是我尝试的: $content = preg_replace('{(<br(\s*/)?>|&nbsp;|\r\n|\r|\n| )+$}i', '', $content); $content=preg|u replace(“{(|

我有这个信息(没有引用,只是为了准确):

“嘿,我来了

"
请注意换行符后的空白。事情是这样的:我正试图删除所有不可见的字符和消息的

,所有这些字符都在消息的末尾,用一个正则表达式来表示“嘿,我在这里”。但我必须做些错事,因为我不能让它工作。这就是我尝试的:

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

但最后的信息仍然是一样的。一定是我错过了一些简单的东西。谢谢你的帮助

这样做不需要正则表达式。使用该功能删除标记

$str = 'hey, here i am<br /><br />';
echo strip_tags($str);//yields hey, here i am
$str='嘿,我在这里

; 回波带标签($str)//嘿,我来了

当你已经有了解析HTML的工具时,不要试图编写自己的正则表达式。有时这是必要的,取决于具体情况,但在你的情况下,我会说它不是。只需使用内置函数。

您不应该使用正则表达式来执行您想要的操作。看看这个答案:


改为使用。

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

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

代码是:

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

$result = preg_replace($re, $subst, $str);
$re=“/([^\\s\\w\\”,](?:br\\w*\\s*)+)\\“$/”;
$str=“\”嘿,我来了
测试

\n\”; $subst=''; $result=preg_replace($re,$subst,$str);
$str='嘿,我在这里

; $str=~s{(
|\s)*$}{}ig;
使用此代码这可能会帮助您

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

”; $cnt=~s/()*///isg; 打印$cnt; 输出:“嘿,我来了”
还有带正则表达式的HTML是个坏主意。将
\r\n |\r |\n
更改为
\r
。我介绍了这项技术。我不能使用stri_标记,因为消息中有一些HTML,它是由用户使用所见即所得编辑器发布的。编辑:哦,我刚刚记得我可以使用带标签的标签,只有一些标签。我要试试。这就是“允许的标签”的作用。我已经在使用HTMLPurifier来指示哪些标签应该被允许,哪些标签将被复制到代码中。@Zarathuztra:你的意思可能是
$allowed\u tags
参数到
strip\u tags()而且忘了说我想允许
,只是不是在消息的结尾。我投了更高的票,但我也不明白它是从哪里来的。你给我的链接很有趣。它不仅适用于
:/。@Codel96。你能发布一些你需要的样本吗?检查此正则表达式,添加
br
([^\s\w“,]br.*\s*)
我只想删除字符串末尾的所有
、空格和换行符。您的代码可以工作,但在@Codel96之后会占用所有内容。您能检查一下吗:。顺便问一下,如果这不符合您的需要,您能更新该页面并提供链接,以便我可以帮助您处理示例吗data@Codel96好的,检查这个:。它需要br正如你所提到的,好的答案伴随着代码示例,并向未来的读者解释。虽然问这个问题的人可能理解你的答案,但解释你是如何得出这个答案的将帮助无数其他人。@Stonz2感谢你花时间正确地回顾并提供有用的评论。这确实很有帮助。
$str = 'hey, here i am<br /><br />';
$str=~s{(<br />|\s)*$}{}ig;
my $cnt;    
$cnt = "hey, here i am<br /><br />";
    $cnt =~s/(<br \/>)*//isg;
print $cnt;
 output : "hey, here i am"