-1

我在 PHP 中遇到了一些奇怪的行为。我有来自输入的一串文本,<textarea/>似乎:

$text = str_replace(array("\r\n", "\r", "\n"), null, $text);

成功删除换行符,而

$text = str_replace("\n", " ", $text)
$text = str_replace("\r\n", " ", $text)
$text = str_replace("\r", " ", $text)

编辑:上面的三个 str_replace 调用用于 \n、\r\n 和 \r

没有成功删除换行符。我什至尝试添加:

$text = str_replace(PHP_EOL, " ", $text);

但这并不能解决问题。我知道我正在用空格而不是 null 替换换行符,但我希望这也能工作。在进行 3-4 次 str_replace() 调用后,如果我:

echo nl2br($text);

它实际上确实找到了一些剩余的换行符。

有任何想法吗?

4

2 回答 2

3

来自 textarea 的文本总是\r\n换行符。

所以你应该这样做$text = str_replace("\r\n", '', $text);

有关更多信息,请参阅规范

于 2012-04-12T17:18:14.773 回答
1

你应该使用:

$text = str_replace("\r\n", " ", $text)
$text = str_replace("\r", " ", $text)
$text = str_replace("\n", " ", $text)

或者

$text = str_replace("\r\n", null, $text)
$text = str_replace("\r", null, $text)
$text = str_replace("\n", null, $text)
于 2012-04-12T17:18:07.470 回答