如何从字符串中删除换行符(没有字符!) ?

这可能看起来像是一个骗局,但是请放心,它不是——我已经搜索了所以以及网络的其他部分来寻找我的问题的答案,结果一遍又一遍地找到同样不充分的“解决方案”。不管怎样,我要说的是:

我将用户输入从一个文本区域保存到一个 MySQL 数据库(在 WordPress 环境中,但我相信这应该不会影响到这个问题)。稍后将从数据库中检索它,并显示给站点后端的管理员。当用户提交带有换行符的文本时(例如,按下 Enter 键) ,就会出现问题。

示例字符串可能如下所示:

Dear friends, I just wanted so Hello. How are you guys? I'm fine, thanks!


Greetings,
Bill

字符串中没有行尾字符(“ n”、“ r”或类似字符)。

我使用 nl2br()来生成 HTML 输出,但这还不够,结果是:

Dear friends, I just wanted so Hello. How are you guys? I'm fine, thanks!<br />
<br />
Greetings,<br />
Bill

根据我的理解,这就是预期的 nl2br()结果,因为它插入了标记,并且一开始就不应该替换换行符?

然而,我需要的格式是这样的:

Dear friends, I just wanted so Hello. How are you guys? I'm fine, thanks!<br /><br />Greetings,<br />Bill

如果字符串中有类似“ n”这样的 EOL 字符,我会用 str_replace()或者 preg_replace()来命中它,然后就完成了,但是如果首先没有字符的话,我不知道该用什么指针来填充这两个函数。

我可以手动访问数据库中的相关字段,对于每个换行符点击 Backspace,然后我想对字符串做什么就可以了。所以我知道我需要以上的格式。

372488 次浏览

您应该能够用一个除去所有换行符并返回回车符的 preg 来替换它。代码如下:

preg_replace( "/\r|\n/", "", $yourString );

即使没有出现 \n字符,如果您正在获得回车,那里也有一个不可见的字符。妊娠替换应该抓住并修复这些。

$str = "
Dear friends, I just wanted so Hello. How are you guys? I'm fine, thanks!<br />
<br />
Greetings,<br />
Bill";


echo str_replace(array("\n", "\r"), '', $str);  // echo $str in a single line

Ben 的解决方案 是可以接受的,但是 Str _ place ()的速度远远快于 ref = “ http://www.php.net/preg _ place”rel = “ norefrer”> preg _ place ()

$buffer = str_replace(array("\r", "\n"), '', $buffer);

使用更少的 CPU 电源,减少世界二氧化碳排放量。

为了在 Windows 上也能正常工作,我建议使用

$buffer = str_replace(["\r\n", "\r", "\n"], "", $buffer);

"\r\n"-适用于 Windows,"\r"-适用于 Mac 和 "\n"-适用于 Linux

这是因为 nl2br()根本不移除新的线。

返回具有 <br /><br> 之前插入所有换行符的字符串(\r\n\n\r\n\r)。

改为使用 str_replace:

$string = str_replace(["\r\n", "\r", "\n"], "<br />", $string);

Str _ place (PHP _ EOL,null,$str) ;

更实用的东西(在任何地方都容易使用) :

function strip_carriage_returns($string)
{
return str_replace(["\n\r", "\n", "\r"], '', $string);
}

使用 PHP _ EOL作为搜索替换参数也是一个好主意。

也可以使用 PHP 修剪

这个函数返回一个字符串,其中空格从 str 的开头和结尾去掉。如果没有第二个参数,trim ()将去掉这些字符:

  • “”(ASCII 32(0x20)) ,一个普通的空间。
  • “ t”(ASCII 9(0x09)) ,一个制表符。
  • “ n”(ASCII 10(0x0A)) ,一个新行(换行)。
  • “ r”(ASCII 13(0x0D)) ,一个回车符。
  • “0”(ASCII 0(0x00)) ,NUL 字节。
  • “ x0B”(ASCII 11(0x0B)) ,一个垂直选项卡。

我用3行来做这项工作,所以考虑 $s作为你的“东西”..。

$s=str_replace(chr(10),'',$s);
$s=str_replace(chr(13),'',$s);
$s=str_replace("\r\n"),'',$s);
  • 图例:

Chr (10) _ _ _ a 换行

Chr (13) _ _ _ 返回

R n _ _ _ _ _ 一条新线

替代内置: 修剪()

trim — Strip whitespace (or other characters) from the beginning and end of a string
Description ¶
trim ( string $str [, string $character_mask = " \t\n\r\0\x0B" ] ) : string


This function returns a string with whitespace stripped from the beginning and end of str.
Without the second parameter, trim() will strip these characters:


" " (ASCII 32 (0x20)), an ordinary space.
"\t" (ASCII 9 (0x09)), a tab.
"\n" (ASCII 10 (0x0A)), a new line (line feed).
"\r" (ASCII 13 (0x0D)), a carriage return.
"\0" (ASCII 0 (0x00)), the NUL-byte.
"\x0B" (ASCII 11 (0x0B)), a vertical tab.

它可以从不同类型的文本文件中删除换行符,但是不能处理 html。

可以使用 preg _ place 替换与正则表达式匹配的字符串的某些部分,如:

preg_replace("/\s+/","",$string);

我认为我的答案是太晚了,但我得到了同样的额外行问题,而使用它在 JS 脚本,但它是这样工作的

这将在字符串中添加 <br />和换行符。

$text = nl2br($text);

这一行将删除额外的行。

$text = preg_replace("/\r|\n/", "", $text);

在 DB 中插入时,用任何不想要的公共符号(如星号 **)替换 <br />:

$text = str_replace("<br />","**",$text );

当我想在程序中使用它的时候,我用它来代替 **

$text = str_replace("**","\\n",$text );

然后在程序中使用 $text