“我试图将文本回显到一行中,没有换行符
"m trying to echo a text into one line with no line breaks
我正在尝试将文本回显到没有换行符的一行中。我尝试使用 nl2br,而不是将所有 /n 或 /r 替换为空。
我希望输出为:
"I"我想把我的文字写成一行
而不是:
"I"我正在尝试写我的文字
一行
<!DOCTYPE html>
<html>
<body>
<?php
$mytext = 'I"m trying to write my text
in one line';
$mytext = nl2br($mytext);
$mytext = preg_replace('/\r?\n|\r/','', $mytext);
$mytext = str_replace(array("\r\n","\r","\n"),"", $mytext);
echo $mytext;
?>
</body>
</html>
只需 preg_replace
即可。如果您需要替换的唯一字符是换行符,请尝试以下操作:
$mytext = 'I"m trying to write my text
in one line';
echo preg_replace('/\n/', ' ', $mytext); // prints I"m trying to write my text in one line
即使您没有在多行字符串中明确包含换行符,换行符也会被解释为换行符,因此您可以在正则表达式中使用 \n
来识别它。
您当前的解决方案未按预期工作的原因是 nl2br
将 html 换行符元素插入到字符串中,而不是换行符。请参阅此处的文档:https://www.php.net/manual/en/function.nl2br.php。当我 运行 你的解决方案打印 I"m trying to write my text<br />in one line
- 换行符被删除,但 nl2br
添加的 html 元素没有被删除。
以后,请将您在 post 中看到的错误输出与代码一起包含在内!
除了不使用 nl2br
并且需要用 space 代替,而不是空字符串,您的代码应该可以正常工作(请注意,您可以通过使用优化 preg_replace
\R
匹配任何 unicode 换行序列):
$mytext = "I'm trying to write my text\r
in one line";
echo preg_replace('/\R/',' ', $mytext);
echo PHP_EOL;
echo str_replace(array("\r\n", "\r","\n"), " ", $mytext);
输出:
I'm trying to write my text in one line
I'm trying to write my text in one line
现在如果你想确保它保留在 HTML 中的一行,你需要用不间断的 space 替换 space,例如
$mytext = str_replace(' ', ' ', $mytext);
这是在 JS 中使用
的演示:
let str = "I'm trying to write my text in one line I'm trying to write my text in one line I'm trying to write my text in one line";
$('#d1').html(str);
str = str.replace(/\s/g, ' ');
$('#d2').html(str);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="d1" style="width: 200px;"></div>
<div id="d2" style="width: 200px;"></div>
我正在尝试将文本回显到没有换行符的一行中。我尝试使用 nl2br,而不是将所有 /n 或 /r 替换为空。 我希望输出为:
"I"我想把我的文字写成一行
而不是:
"I"我正在尝试写我的文字
一行
<!DOCTYPE html>
<html>
<body>
<?php
$mytext = 'I"m trying to write my text
in one line';
$mytext = nl2br($mytext);
$mytext = preg_replace('/\r?\n|\r/','', $mytext);
$mytext = str_replace(array("\r\n","\r","\n"),"", $mytext);
echo $mytext;
?>
</body>
</html>
只需 preg_replace
即可。如果您需要替换的唯一字符是换行符,请尝试以下操作:
$mytext = 'I"m trying to write my text
in one line';
echo preg_replace('/\n/', ' ', $mytext); // prints I"m trying to write my text in one line
即使您没有在多行字符串中明确包含换行符,换行符也会被解释为换行符,因此您可以在正则表达式中使用 \n
来识别它。
您当前的解决方案未按预期工作的原因是 nl2br
将 html 换行符元素插入到字符串中,而不是换行符。请参阅此处的文档:https://www.php.net/manual/en/function.nl2br.php。当我 运行 你的解决方案打印 I"m trying to write my text<br />in one line
- 换行符被删除,但 nl2br
添加的 html 元素没有被删除。
以后,请将您在 post 中看到的错误输出与代码一起包含在内!
除了不使用 nl2br
并且需要用 space 代替,而不是空字符串,您的代码应该可以正常工作(请注意,您可以通过使用优化 preg_replace
\R
匹配任何 unicode 换行序列):
$mytext = "I'm trying to write my text\r
in one line";
echo preg_replace('/\R/',' ', $mytext);
echo PHP_EOL;
echo str_replace(array("\r\n", "\r","\n"), " ", $mytext);
输出:
I'm trying to write my text in one line
I'm trying to write my text in one line
现在如果你想确保它保留在 HTML 中的一行,你需要用不间断的 space 替换 space,例如
$mytext = str_replace(' ', ' ', $mytext);
这是在 JS 中使用
的演示:
let str = "I'm trying to write my text in one line I'm trying to write my text in one line I'm trying to write my text in one line";
$('#d1').html(str);
str = str.replace(/\s/g, ' ');
$('#d2').html(str);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="d1" style="width: 200px;"></div>
<div id="d2" style="width: 200px;"></div>