如何从字符串中删除错误转义的换行符


How to remove incorrectly escaped line breaks from a string

这里有一个字符串,它在某个时候被错误地转义了。。我们无法从根本上解决这个问题(想象一下它来自不同的系统)。

$orig = 'Helprn rnrnI need somebodyrnrnrnHelp rnrnNo just burn baby burn anybody';

我如何安全、一致地替换rn,但更改bu*rn*等单词(或以rn结尾的任何其他单词,例如。http://www.morewords.com/ends-with/rn/)?

$correctString = str_replace(' rn', '<br/>', $orig);
$correctString = str_replace('<br/>rn', '<br/><br/>', $correctString);
// etc... until we have a totally clean string..

$correctString最终将看起来像:

Help

I need somebody

Help 
No just burn baby burn anybody

这基本上是不可能的,有些信息丢失了,所以你将无法重新创建它。

只有手动后处理才能区分"烧录"等异常。

我想说的是,如果你的文本总是纯英文的,那么创建一个包含"rn"的单词词典,并在你的算法中将它们作为例外使用,这将改进过程,因为它对"burn"有效,但对"burrnbaby"无效,这并不完美。

我不知道有什么方法可以检测"rn";当您遇到问题中提出的情况时,适当地作为回车。

我认为您需要对文本进行迭代,并将每个值与字典进行比较。

但即便如此,这也可能被证明是不可能的。那些包含";rn";但是是不带"em"的单词(或名称!);rn";?你怎么知道";rn";回车还是单词的一部分?

Learn写信给她的父亲。(Lea <br/>写信给她的父亲。)

那张纸是写给他的,写得很破。(这篇论文是写给<br/>的,地址是他。)

我认为你唯一能安全地做的事情就是转换";rnrn";返回双车厢;据我所知,这个模式不是任何单词的一部分。

在这一步骤之后,考虑由人类转换数据。但很明显,这样做的可行性取决于你指挥下的数据量和人员的可用性(或复选框…)

如果总是rn的组,比如rnrnrn或rnrn,那么rn的正则表达式后面跟着一个或多个rn,例如(rn)''1+来进行替换,在某种程度上