php正则表达式-删除\r\n\r\n字符串开头和结尾处的内容

php正则表达式-删除\r\n\r\n字符串开头和结尾处的内容,php,regex,preg-replace,line-breaks,carriage-return,Php,Regex,Preg Replace,Line Breaks,Carriage Return,如果存在,我需要删除字符串开头和/或结尾的\r\n\r\n。 我的问题是我无法用下面的代码实现我的目标 //if exists, remove \r\n\r\n at the very beginning $str = preg_replace('/^(\r\n\r\n)/', '', $str); //if exists, remove \r\n\r\n at the very end $str = preg_replace('/$(\r\n\r\n)/', '', $str); 也许我的

如果存在,我需要删除字符串开头和/或结尾的
\r\n\r\n

我的问题是我无法用下面的代码实现我的目标

//if exists, remove \r\n\r\n at the very beginning
$str = preg_replace('/^(\r\n\r\n)/', '', $str);

//if exists, remove \r\n\r\n at the very end
$str = preg_replace('/$(\r\n\r\n)/', '', $str);
也许我的html输出的源代码视图可以给你一些线索。我不知道原因,但是标签不是并排的。他们的地位是一个在另一个之下

<br />
<br />
some text
...
...
some text<br />
<br />


一些文本 ... ... 一些文本

下面,我将分享我的整个字符串操作代码。我有问题的两行代码是下面代码的一部分。(除上述2行代码外,其他部分工作正常)

函数转换\u str($str)
{
//删除多余的空白
//查找一个或多个空格,并用单个空格替换所有空格。
$str=preg_replace('/+/','$str);
//检查一行中是否有两个以上的换行符
//然后将它们更改为总共两个换行符
$str=preg_replace('/(?:(?:\r\n |\r\n)\s*){2}/s',“\r\n\r\n”,$str);
//如果存在,请从一开始就删除\r\n\r\n
$str=preg_replace('/^(\r\n\r\n)/',''$str);
//如果存在,请删除最末尾的\r\n\r\n
$str=preg_replace('/$(\r\n\r\n)/',''$str);
//如果存在,请在任何字符之前删除1个空格\r\n
$str=str\u replace(“\r\n”、“\r\n”、$str);
//如果存在,请在任何字符之后删除1个空格\r\n
$str=str\u replace(“\r\n”、“\r\n”、$str);
//如果存在,请删除下面标点符号前的1个空格字符:
//$punc=数组('.','.','.','.','.';',':','.','.','!','-','-','-','\','''.','''.','''.'(','.'),'[','.''''.',''.''''.''''.'''.','.'-','.'-','.','.','''.'.'.'&',''''.'.''.'''''.'和','.''.'''.''';
$punc=数组('.','.','.','.','.';',':','.','.','!','-','-','-','\','''.','''.','''.'(','.'),'[','.''''.',''.''''.''''.'''.','.'-','.'-','.','.','''.'.'.'&',''''.'.''.'''''.'和','.''.'''.''';
$replace=array('.'、'.'、'.'、';'、':'、'.'、'?'、'!'、'-'、'-'、'/'、'\'、''''.'、'''.'、''.'('.'、')'、'['、'.'、'.''''.'''''.'''.'、'.'-'、'.&'、'.'.'''.''.'.'和'、'.'''.'.'''''.'.''.''''''''.'.''''.'和'.';
$str=str_replace($punc,$replace,$str);
返回$str;
}
你能纠正我吗

谢谢

BR

尝试更换

//if exists, remove \r\n\r\n at the very end
$str = preg_replace('/$(\r\n\r\n)/', '', $str);

您也可以尝试使用(例如,字符串修剪(string$str[,string$charlist=“\t\n\r\0\x0B”])

您需要使用string函数来处理此问题

修剪-从字符串的开头和结尾删除空白(或其他字符)

示例:

$str=trim($str);

你知道对吧?@elclanrs我错误地坚持使用preg_replace,这让我失明了。我感到羞愧。非常感谢。你的评论对我来说是一个很好的教训。同样,将regex用于stringreplace也很简单,这真的很糟糕!@AndreChenier请记住。如果你能写下你想要替换的内容,而不需要进一步修改条件,那么你就不需要正则表达式了。如果它甚至只是一个空格,那么trim就足够了。否则就使用str_replace。@AndreChenier:这种情况经常发生。PHP标准库非常庞大,很容易丢失现有的功能。但一旦使用它,你永远不会忘记。
//if exists, remove \r\n\r\n at the very end
$str = preg_replace('/$(\r\n\r\n)/', '', $str);
//if exists, remove \r\n\r\n at the very end
$str = preg_replace('/(\r\n\r\n)$/', '', $str);