Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP正则表达式修复换行_Php_Regex - Fatal编程技术网

PHP正则表达式修复换行

PHP正则表达式修复换行,php,regex,Php,Regex,我正在尝试用PHP处理一段文本,以删除换行符。把这个看作是一个反向的单词缠绕函数,它只影响中间被破坏的线,但是在段落末尾保持线断裂。原始内容为纯文本格式 这是原始内容的一个示例: 敏捷的棕色狐狸跳过懒狗。狐狸是橙色的,狗是蓝色的。 一只蓝色的鸟出现在窗户上,欢快地唱着歌 应将其转换为: 敏捷的棕色狐狸跳过了懒狗。狐狸是橙色的,狗是蓝色的。 一只蓝色的鸟出现在窗户上,欢快地唱着歌 我的逻辑是创建一个可接受的行尾字符列表,如句号、冒号和分号,并从没有以这些字符结尾的行中删除任何分隔符。我认为它是有效

我正在尝试用PHP处理一段文本,以删除换行符。把这个看作是一个反向的单词缠绕函数,它只影响中间被破坏的线,但是在段落末尾保持线断裂。原始内容为纯文本格式

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

敏捷的棕色狐狸跳过懒狗。狐狸是橙色的,狗是蓝色的。
一只蓝色的鸟出现在窗户上,欢快地唱着歌

应将其转换为:

敏捷的棕色狐狸跳过了懒狗。狐狸是橙色的,狗是蓝色的。

一只蓝色的鸟出现在窗户上,欢快地唱着歌

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

我目前的进展情况:

$content=preg\u replace(“/(?如果你想用正则表达式来做这件事,你必须研究lookbehind,尤其是负lookbehind,你可以读一读

您可以从以下内容进行构建:

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

到目前为止,我刚刚用我的进度更新了这个问题。感谢您指出。您愿意采用一种解决方案,对文本进行两次遍历吗?一次遍历查找可接受的行尾字符,然后插入一个额外的换行符。然后,另一次遍历删除所有未立即后跟另一个换行符的换行符呃新线。