Php “的正则表达式”;“固定”;电子邮件标题,使其成为一行

Php “的正则表达式”;“固定”;电子邮件标题,使其成为一行,php,regex,preg-replace,Php,Regex,Preg Replace,可能重复: 我有一些类似于电子邮件数据的输入数据,因为长行被包装到下一行。例如: robot-useragent: ABCdatos BotLink/1.0.2 (test links) robot-language: basic robot-description: This robot is used to verify availability of the ABCdatos directory entries (http://www.abcdat

可能重复:

我有一些类似于电子邮件数据的输入数据,因为长行被包装到下一行。例如:

robot-useragent: ABCdatos BotLink/1.0.2 (test links)
robot-language: basic
robot-description: This robot is used to verify availability of the ABCdatos
                   directory entries (http://www.abcdatos.com), checking
                   HTTP HEAD. Robot runs twice a week. Under HTTP 5xx
                   error responses or unable to connect, it repeats
                   verification some hours later, verifiying if that was a
                   temporary situation.
robot description
字段对于一行来说“太长”,并被包装到下一行。为了帮助解析这些数据,我想提出一个正则表达式,它可以与
preg_replace()
一起使用,以替换为以下条件:

  • 后跟空格的新行字符
  • 替换新行字符,然后再替换其他新行字符
示例输出:

robot-description: This robot is used to verify availability of the ABCdatos directory entries (http://www.abcdatos.com), checking HTTP HEAD. Robot runs twice a week. Under HTTP 5xx error responses or unable to connect, it repeats verification some hours later, verifiying if that was a temporary situation.
我对RegEx不熟悉。我如何构建这样一个表达式?如果您选择回答,请对表达式中的组件进行简要说明。我真的很想学习如何做这些

我从以下内容开始:
\n([^\S])*
它就要结束了

也许你可以试试:

(\r\124;\ n)\s+

(\r|\n) # matches both newline and carriage return 
\s+     # any whitespace (tabs, spaces, new lines)

!

@MarcB,这不是复制品。在我的另一个问题中,我要问的是如何以类似于内置IMAP函数的方式整体处理头部。在这个问题中,我特别要求RegEx重新加入这些行。在我看来,这些是完全不同的问题。虽然它们与我的目标相同,但我想知道两者的解决方案。如果你不同意,请让我知道。谢谢你的回答。不幸的是,这似乎把一切都放在一条线上。鲍里斯,我看你的例子是这样的。知道为什么代码板版本不是这样吗?我需要指定一些额外的选项吗?它在代码板上也起作用,请查看源代码或使用
nl2br()
(新行不以HTML解释)代码板用行号显示原始输出,而不是HTML。你可以用你的表达式看到这个例子,后面有一个新行和测试文本:@Brad,我怀疑codepad有问题。我在我的本地env和on上进行了测试,结果与预期相符。请注意,您的答案是完全相同的(除了它不允许新行作为空白)<代码>[\t\n]=
\s