2012-02-23 25 views
1

データベースから引き出されたデータから「\ n」を削除するのに奇妙な問題があります。str_replace/nl2brが期待どおりに動作しない

データは電子メールであり、それを入力するシステムによって\ nで保存されます。

私はそれを表示すると、私は次の使用して、これらの\ n個のを削除しようとしました:

$htmlbody = str_replace("\n", "", $message['htmlbody']); 

または

nl2br($message['htmlbody']); 

が、両方のコマンドがまだ\ n個の満ちている文字列を返します。

変数$メッセージ[「のHtmlBody」]は\n\n <div>\n Example Data \n </div>\nのような文字列が含まれており、このデータはstr_replaceを通過した後に同じまま。

元々、データはHTMLメールのすべての改行を\ nに置き換えたJSONウェブフックからのものです。私はデータをデータベースに入れて管理しており、元のデータに対して上記の操作を同じ結果を使って試してみました。

これを引き起こす可能性のある考えはありますか?

乾杯。

+6

あなたは 'str_replace'の結果を割り当てますか? – knittl

+0

うん。 '$ htmlbody = str_replace(" \ n "、" "、$ message ['htmlbody']);'が使用され、その時点で 'echo $ htmlbody'を使ってテストしています...サンプル文字列'\ n \ n

\n bjhbkhbkbhkuubuhbhjbh\n
\ n'として出力されています –

+0

' nl2br'の例で閉じ括弧が欠落しています。 (私はそれがあなたの問題ではなく、ここの* typoだと思います)。 –

答えて

0
$message['htmlbody'] = str_replace("\n", "", $message['htmlbody']); 

変更しようとする文字列が\nを表示し、新しい行として解釈されない、使用している場合:

Google検索

$message = preg_replace("/\n|\r/", " ", $message['htmlbody']); 

でこれを見つけた

$message['htmlbody'] = str_replace("\\n", "", $message['htmlbody']); 
+0

ありがとう、しかし、それは私が今のところ持っているものです。私はそれの地獄のためにそれを試みたが、同じ問題がまだあります。出力はまだ\ n個のが含まれています。 'N' –

+0

\ \ N \ N

\n bjhbkhbkbhkuubuhbhjbh\n
があなたの投稿を編集し、あなたのコードのビットより多くをコピーすることができますしてください –

+0

私はそれ –

1

を改行は空白で置き換えられます。

+1

あなたの解決策は2つのスペースで "\ r \ n"文字(Windowsキャリッジリターン改行)を置き換えます... – silly

+0

私はそれを間違って読んでいれば訂正しますが、これは改行またはキャリッジリターンを単一のスペースで置き換える必要があります。スペースは削除するのは簡単ですが、ほとんどの状況ではおそらく便利です。編集:私はあなたが言っているものを参照してください。うーん。 – buck54321

+0

私の答えを見て、私は最初に\ r \ nを置き換え、残りの部分よりも良いと思います! – silly

0

stripslashesを通じて$messageを渡して試してみてください。それは

$message['htmlbody'] = nl2br(stripslashes($message['htmlbody'])) 
1

その後、最初の\ rを\ nはその後、\ Rを交換してし...あなたは\\ N \\ rを、それが正しいエスケープを防ぐダブルスラッシュで持っている可能性があり、\ nは、これを使用します。

$message['htmlbody'] = preg_replace(array("/\r\n/", "/\r/", "/\n/"), array(' ',' ', ' '), $message['htmlbody']); 
関連する問題