【问题标题】:how to manipulate CRLF in php?如何在 php 中操作 CRLF?
【发布时间】:2016-01-20 11:56:10
【问题描述】:

假设我有如下字符串 $cmets = Windows Embedded Compact (Windows CE) 或 Windows Server。已停产的 Windows 系列包括 Windows 9x 和 Windows Mobile。 [CR][LF] [CR][LF] 微软于 1985 年 11 月 20 日推出了名为 Windows 的操作环境,作为 MS-DOS 的图形操作系统外壳,以响应对图形用户界面 (GUI) 日益增长的兴趣。

注意:[CR][LF] 是为问题手动添加的。当任何用户在我们观察这些元素的 cmets 富文本区域框中复制和粘贴任何 html 内容时,我发现了这个问题。

有没有办法在 PHP 中用 \n\r 替换它们。

我试过这样的

$comments = preg_replace("/\r\n\r\n|\r\r|\n\n/", "<br />", $comments);

它没有给我任何正确的结果。

【问题讨论】:

  • 如果您打算用\n\r 替换每个换行符序列,您可以使用'~\R~' 并替换为\n\r
  • 您的要求不清楚。请更新问题,说明您需要用什么替换。我不知道你期望什么“正确”的结果。
  • 您能否就您的尝试和结果给我们一些反馈?
  • @WiktorStribiżew 它在下面的正则表达式的帮助下工作。
  • 好。不过,未来的读者并不知道您的问题到底是什么样的。

标签: php regex copy-paste line-breaks invalid-characters


【解决方案1】:

假设您想用 [CR][LF] 替换 [CR] 和 [LF] 的任何组合(即 \r\n,而不是 \n\r),试试这个:

$string = ".....[CR].....[LF]...[CR][LF].....[CR][CR].......[LF][LF].......";
$result = preg_replace('/\r\n|\n\r|\r|\n/', '\r\n', $string);

【讨论】:

  • @Wiktor:谢谢 - 你是对的。我将更新示例。
  • 仍然不清楚您的答案是否正确,因为问题不清楚。
  • @WiktorStribiżew:如果我的字符串有这样的字符,我想在向 API 发送请求之前转义它们。如果我的问题仍然不清楚,请告诉我。我会在提供正确的问题方面提高自己
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-25
  • 1970-01-01
  • 1970-01-01
  • 2015-09-27
  • 2010-09-06
  • 2016-08-24
相关资源
最近更新 更多