2012-02-14 3 views
1

ここでは、\ r \ nが間違ってエスケープされた文字列があります。これは根本的に修正することはできません。エスケープされた改行を文字列から間違って削除する方法

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

にはどうすれば安全に、一貫してRNに置き換わるが、府などのない ALTER言葉* 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

'rn'の正しいインスタンスを'
'に置き換えることは、私のやり方ではありません。それは実際にはキャリッジリターンではなく、HTMLの改行です。このテキストを別の方法でリフローさせたい場合はどうすればよいですか?ちょっとした考え。 – JYelton

+0

これらの文字列は完全な辞書を持っていますか? –

+0

@EugenRieck、私は辞書をループする必要はありませんが、私は本当にこれを達成するための他の方法を考えることができません。 – tester

答えて

2

は、いくつかの情報が失われた、あなたはそれを再作成することはできませんので。

「後燃焼」のような例外を区別できるのは、手動による後処理だけです。

あなたのテキストが常に英語であれば、 "rn"を含む単語の辞書を作成してアルゴリズムの例外として使用すると、プロセスが「燃え尽きる」ように改善されますが、それは "burnrnbaby"のためにはうまくいかないので完璧ではありません。

2

私は質問に状況があるときに「rn」をキャリッジリターンとして正しく検出する方法がないことを知っています。

テキスト全体を繰り返し、空白で区切り、各値を辞書と比較する必要があると思います。

でも、それは不可能かもしれません。 "rn"を含む単語はどうですか? "rn"のない単語(または名前!)はどうですか? "rn"が改行か単語の一部かはどうやって分かりますか?

Learnは彼女のfatherに書き込みました。 (Lea <br/>は彼女の父親に書いた)

紙は彼に裂かれたアドレスを書きました。 (紙が彼に対処<br/>に書かれていた。)

私はあなたが安全に行うことができる唯一のことは、二重のキャリッジリターンに「rnrnが」のインスタンスを変換だと思います。私が知っている限り、パターンはどんな言葉の一部でもありません。

この手順の後、データを人間によって変換させることを検討してください。しかし明らかにそのような可能性は、あなたの命令(または小切手帳)の下でのデータの量と人間の利用可能性に依存します。

1

rnrnrnまたはrnrnのように常にrnのグループであれば、rnの正規表現に続いて1つ以上のrnがあります。 (rn)置換を行うための\ 1+はある程度はうまくいくでしょう

関連する問題