PHP正则表达式修复换行

时间:2014-02-03 14:20:24

标签: php regex

我正在尝试在PHP中处理一大块文本以删除自动换行。可以将其视为反向自动换行功能,仅影响中间断开的行,但在段落末尾保留换行符。原始内容采用纯文本格式。

这是原始内容的一个示例:

  

快速的棕色狐狸跳过懒狗。狐狸是橙色的,狗是蓝色的   一只蓝鸟出现在窗口,唱着欢快的歌声。

应将其转换为:

  

快速的棕色狐狸跳过懒狗。狐狸是橙色的,狗是蓝色的。

  窗外出现一只蓝鸟,唱着欢快的歌声。

我的逻辑是创建一个接受的行尾字符列表,如句号,冒号和分号,并从不以这些字符结尾的行中删除任何符号。我认为它有效,但我很难将其翻译成正则表达式。任何帮助,将不胜感激。

到目前为止我的进展:
$content = preg_replace("/(?<!\.)$/m", "XXXX", $content);

这匹配任何不以句号结尾的行。我仍然需要在比赛中包括换行符以及在此期间之后的任何空格。我认为我还需要创建一个组来匹配其他行结尾字符,行冒号和分号。很难把它们放在一起。

1 个答案:

答案 0 :(得分:1)

如果你想通过正则表达式进行操作,你将不得不考虑一下后视特别负面的背后隐藏,你可以阅读一下here

你可以从这个构建:

<?php
$data = file_get_contents('test_data.txt');
echo preg_replace("/\n(?<![.,;]\n)/"," ",$data);