我正在尝试在PHP中处理一大块文本以删除自动换行。可以将其视为反向自动换行功能,仅影响中间断开的行,但在段落末尾保留换行符。原始内容采用纯文本格式。
这是原始内容的一个示例:
快速的棕色狐狸跳过懒狗。狐狸是橙色的,狗是蓝色的 一只蓝鸟出现在窗口,唱着欢快的歌声。
应将其转换为:
快速的棕色狐狸跳过懒狗。狐狸是橙色的,狗是蓝色的。
窗外出现一只蓝鸟,唱着欢快的歌声。
我的逻辑是创建一个接受的行尾字符列表,如句号,冒号和分号,并从不以这些字符结尾的行中删除任何符号。我认为它有效,但我很难将其翻译成正则表达式。任何帮助,将不胜感激。
到目前为止我的进展:
$content = preg_replace("/(?<!\.)$/m", "XXXX", $content);
这匹配任何不以句号结尾的行。我仍然需要在比赛中包括换行符以及在此期间之后的任何空格。我认为我还需要创建一个组来匹配其他行结尾字符,行冒号和分号。很难把它们放在一起。
答案 0 :(得分:1)
如果你想通过正则表达式进行操作,你将不得不考虑一下后视特别负面的背后隐藏,你可以阅读一下here。
你可以从这个构建:
<?php
$data = file_get_contents('test_data.txt');
echo preg_replace("/\n(?<![.,;]\n)/"," ",$data);