如何使用PHP从字符串中删除换行符?
$string = str_replace(PHP_EOL, '', $string);
或者$string = str_replace(array("\n","\r"), '', $string);
$string = str_replace("\n", "", $string);
$string = str_replace("\r", "", $string);
为了删除多个换行符,建议使用正则表达式:
$my_string = trim(preg_replace('/\s\s+/', ' ', $my_string));
+
符号表示 1 或多个,您不需要第一个 \s
。 - Joe H$string = str_replace(array("\n","\r\n","\r"), '', $string)
来替换字符串。因为从文本区输入时,一些换行符可能会保留原样。stripcslashes足以胜任(可移除\r\n等字符)
$str = stripcslashes($str);
有一些更加实用的东西(随处可用):
function strip_carriage_returns($string)
{
return str_replace(array("\n\r", "\n", "\r"), '', $string);
}
试一下这个方法。它对我很有效。
首先,从字符串中删除n
(在n
前使用双斜线)。
然后,像n
一样从字符串中删除r
。
代码:
$string = str_replace("\\n", $string);
$string = str_replace("\\r", $string);
自从我上次回答这个问题以来,情况发生了变化,所以这里有一个我创建的小测试。我比较了四种最有前途的方法,preg_replace vs. strtr vs. str_replace,而strtr之所以出现两次,是因为它有单字符和数组到数组模式。
您可以在此处运行测试:
https://deneskellner.com/stackoverflow-examples/1991198/
251.84 ticks using preg_replace("/[\r\n]+/"," ",$text);
81.04 ticks using strtr($text,["\r"=>"","\n"=>""]);
11.65 ticks using str_replace($text,["\r","\n"],["",""])
4.65 ticks using strtr($text,"\r\n"," ")
(请注意这是实时测试,服务器负载可能会发生变化,因此您可能会得到不同的数字。)
preg_replace
方案明显较慢,但没关系。它们执行不同的任务,PHP没有准备好的正则表达式,因此它每次都在解析表达式。期望它们获胜是不公平的。
另一方面,在第2-3行中,str_replace
和strtr
几乎执行相同的任务,但性能差异很大。它们处理数组,并且按照我们的要求执行 - 删除换行符,并将其替换为空白。
最后一个是一个卑鄙的技巧:它用字符替换字符,也就是用空格替换换行符。它甚至更快,这是有意义的,因为当你摆脱换行符时,你可能不想将一行的最后一个单词与下一行的第一个单词连接起来。因此,它并不是完全符合OP所描述的,但显然是最快的。对于长字符串和许多替换,差异将增加,因为字符替换本质上是线性的。
str_replace
胜出如果您可以承受使用空格而不是[\r\n]
,请使用字符的strtr
。在平均情况下,它的速度是str_replace
的两倍,并且当存在许多短行时,它可能会更快。
$string = preg_replace('/\R+/', ' ', $string);
使用:
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函数移除的换行符。
\nStretcher
我无法实现。 - Kunal Rajput