如何使用php从字符串中删除换行符?
答案 0 :(得分:81)
$string = str_replace(PHP_EOL, '', $string);
或
$string = str_replace(array("\n","\r"), '', $string);
答案 1 :(得分:41)
$string = str_replace("\n", "", $string);
$string = str_replace("\r", "", $string);
答案 2 :(得分:14)
要删除几个新行,建议使用正则表达式:
$my_string = trim(preg_replace('/\s\s+/', ' ', $my_string));
答案 3 :(得分:7)
更好用,
$string = str_replace(array("\n","\r\n","\r"), '', $string)
。
因为某些换行符仍然来自textarea输入。
答案 4 :(得分:5)
功能更强大(易于在任何地方使用):
function strip_carriage_returns($string)
{
return str_replace(array("\n\r", "\n", "\r"), '', $string);
}
答案 5 :(得分:2)
试一试 它为我工作
首先从字符串中删除n
(在n
之前使用双斜杠),
然后从r
n
代码:
$string=str_replace("\\n",$string);
$string=str_replace("\\r",$string);
答案 6 :(得分:2)
这是摆脱换行符的最快方式:
// method 1
$s = strtr($s,"\n\r"," ");
这只会将换行符替换为空格。实际上,当您处理html文本时,这是理想的。它不会在行尾连接单词(例如,“ bro”位于末尾,下一行的“ Ken”不会变成“ broKen”)。同时,它非常快,不会改变字符串的长度(节省大量数据!),并且除了字符级处理外,不需要任何其他操作,这非常高效。 (与将数组提供给strtr明显相反)
现在,如果由于某些原因您要实际上删除换行符:
// method 2
$s = strtr($s,["\n"=>"","\r"=>""]);
// method 3
$s = preg_replace('/[\r\n]/','',$s);
这些方法使用相当短的纯文本字符串几乎可以以相同的速度运行。但是随着有效负载(4MB文本)的增加,细微的差别开始显示出来:
4MB text with 70 thousand line breaks:
- method 1: 3.26ms // strtr("")
- method 2: 8.58ms // strtr([]) is slower
- method 3: 6.05ms // preg beats strtr! never expected that!
4MB text with 1.3 million line breaks:
- method 1: 3.26ms // stays the same, no matter how many replaces!
- method 2: 33.12ms // more work to do, slower execution
- method 3: 55.73ms // preg performs worst this time
方法1 是绝对赢家。不在乎它必须替换多少个字符-它一次又一次地触摸所有内容。
方法2和3 :当有很多要替换的东西时,带有数组的strtr比preg效率更高。如果是普通文本(每行80-100个字符),则preg会使strtr稍差一些;不过,在这种情况下,我通常也会选择strtr。但是,是的,预浸料的速度出乎意料的快,尤其是与其功能相比。
TLDR:
关于PHP_EOL的注释:我已经看到提到此常量的答案,这表明我们应该只替换“官方”行尾序列,例如Windows的CRLF。现在,这通常是一个错误:虽然看起来很合适,但如果文件不是在同一平台上创建的,它将处理错误的文件。您在Linux上运行,处理从Windows上传的文件-las,您到处都是“ \ r”。所以不要这样它仅适用于同一平台的操作。
答案 7 :(得分:1)
stripcslashes应该足够了(删除\ r \ n等)
$str = stripcslashes($str);
返回一个反斜杠被去除的字符串。识别类似C的\ n, \ r ...,八进制和十六进制表示形式。
答案 8 :(得分:-1)
function removeP($text){
$key=0;
$newText="";
while ($key < strlen($text)) {
if(ord($text[$key])==9 or ord($text[$key])==10){
//$newText .= '<br>';//uncomment this if you want <br> to replace that spacial characters;
}else{
$newText .= $text[$key];
}
// echo $k."'".$t[$k]."'=". ord($t[$k])."<br>";
$key++;
}
return $newText;
}
$myvar = removeP("your String");
注意:在这里,我没有使用php正则表达式,但是您仍然可以删除换行符
这将删除所有未由preg_replace,str_replace或trim函数删除的换行符