如何从字符串中删除换行符(无字符!


How to remove line breaks (no characters!) from the string?

似乎是一个骗局,但请放心,事实并非如此 - 我已经搜索了SO以及网络的其他部分,以寻找我问题的答案,最终一遍又一遍地找到同样不足的"解决方案"。无论如何,它在这里:

我正在将用户输入从文本区域保存到MySQL数据库(在WordPress环境中,但我相信这对这个问题无关紧要)。稍后从数据库中检索它,以在站点后端向管理员显示。当用户提交带有换行符的文本(即按 Enter 键)时,会出现此问题。

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

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

字符串中没有行尾字符("'"、"''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

如果字符串中有 EOL 字符,例如"'",我会用 str_replace()preg_replace() 敲击它并完成它,但如果一开始没有字符,我不知道该用什么针来输入这两个函数中的任何一个。

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

Ben的解决方案是可以接受的,但str_replace()比preg_replace()快得多。

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

使用更少的CPU功率,减少世界二氧化碳排放。

您应该能够将其替换为删除所有换行符和回车符的预件。代码为:

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

这是因为nl2br()根本不删除新行。

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

请改用str_replace

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

功能更强大(易于在任何地方使用):

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

使用 PHP_EOL 作为搜索替换参数也是一个好主意!荣誉。

str_replace(PHP_EOL, null, $str);

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

$buffer = str_replace(["'r'n", "'r", "'n"], "", $buffer);
"'r'n" - 适用于

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

你也可以

使用 PHP trim

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

  • "(ASCII 32(0x20)),一个普通的空间。
  • "''t"(ASCII 9 (0x09)),一个制表符。
  • "'"(ASCII 10 (0x0A)),换行符(换行符)。
  • "''r"(ASCII 13 (0x0D)),回车符。
  • "''0"(ASCII 0 (0x00)),NUL 字节。
  • "''x0B"(ASCII 11 (0x0B)),一个垂直制表符。
我认为

我的回答为时已晚,但是在JS脚本中使用它时遇到了相同的额外行问题,但是它的工作方式是这样的

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

$text = nl2br($text);

此行将删除多余的行。

$text = preg_replace("/'r|'n/", "", $text);
插入

数据库时,将<br />替换为任何不需要的通用符号,例如**星号:

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

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

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

然后在程序中使用$text

我用 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)___the返回

''

r'______a换行

替代内置:trim()

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。

在尝试了所有这些解决方案之后......唯一有效的是(urlencode - 然后替换 - 然后urldecode)

$jsonDump = urlencode($jsonDump);
$jsonDump = str_replace("%5Cr","",$jsonDump);
$jsonDump = str_replace("%5Cn","",$jsonDump);
$jsonDump = urldecode($jsonDump);
您可以使用

preg_replace来替换与正则表达式匹配的字符串部分,例如:

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