这里有一个字符串,它在某个时候被错误地转义了。。我们无法从根本上解决这个问题(想象一下它来自不同的系统)。
$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+来进行替换,在某种程度上