这里我有一个字符串,在某些时候它的\ r \ n不正确地逃脱了..我们无法从根本上解决这个问题(想象它来自不同的系统)。
$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
答案 0 :(得分:2)
这基本上是不可能的,有些信息丢失了,所以你将无法重新创建它。
只有手动后处理才能区分“刻录”等异常。
我想说,如果你的文字总是简单的英文,请创建一个包含“rn”的单词的词典,并将它们用作算法中的例外,这样可以改善过程,因为它可以用于“刻录”,但不会是完美的,因为它不适用于“burnrnbaby”。
答案 1 :(得分:2)
我知道当你遇到问题所带来的情况时,没有办法正确检测“rn”作为回车。
我认为您需要迭代文本,按空格分解,并将每个值与字典进行比较。
但即便如此也许是不可能的。那些包含“rn”但是也是单词(或名字!)而没有“rn”的单词怎么样?你怎么知道“rn”是回车还是单词的一部分?
学习写给她父亲。 (Lea<br/>
写信给她父亲。) 这篇论文写得很撕裂他。 (该文件是写给<br/>
的。)
我认为你唯一能安全做的就是将“rnrn”的实例转换为双回车;据我所知,模式不是任何单词的一部分。
在该步骤之后,考虑将数据转换为人类。但显然这种可行性取决于你的命令(或支票簿......)下的人的数据量和可用性。
答案 2 :(得分:1)
如果它总是rn的组,如rnrnrn或rnrn那么rn的正则表达式后跟一个或多个rn,例如: (rn)\ 1+做替换会在某种程度上起作用