julyさんありがとうございます。ご指摘のとおり\r\nでした。
ここに手打ちしたとき間違えたようで、あらためて確認しても出来ませんでした。
ちなみにstr_replace('\\r','
',$str) 等と分けても変化なしでした。
また、日本語は置換出来ないと思ったのは勘違いで日本語はstr_replaceで普通に置換できました。\マークだけ出来ません。r一文字だけの置換も出来ました。
UTF-8のテキストとして \n\t と記録されてしまっているのでしょう。
下記のコードで変換してください。
<?php $str = preg_replace("/\\r\\n/u", '<br />', $str); ?>
▽2
●
tezcello ●60ポイント ベストアンサー |
> 改行コードだけがsjisの値で保存されてる?のかもしれません。
改行文字は Shift_JIS も UTF-8 も同じです。
> 改行コード¥n¥rがそのまま表示されてしまい
ブラウザ上(あるいはソース上)に ¥ が見えるとしたら、改行コードではなくなってしまっています。
> r一文字だけの置換も出来ました。
これからも、データ上は改行コードではなくなってしまっている可能性が窺えます。
> サーバ移動がありutf8に変換されました。
この時に意図しない変換が行われたのかもしれません。
Shift_JIS では(日本だけ)円マークとバックスラッシュ同じ扱い(コード 5C )ですが UTF-8 では全く違う文字ですし。
ただし、改行文字を勝手に別なものに置き換えるような事は余程変な事をしないとあり得ないですが。
DBに改行文字ではなく、¥n のように2つの文字( ¥r¥n なら4つの文字)として格納されるという変な変換(エスケープ?)が行われていたら、可能性が無くもない...
phpMyAdmin をお使いなら、
全データをエクスポートして(=SQL化して)ダウンロード
円マークとバックスラッシュを区別できるエディタで必要な所を修正
SQLの実行で修正後のファイルを指定して実行
の様な手順でゴッソリ入れ替えてやる事で、対応できそうに思います。
__円マークとバクスラッシュを区別できないエディタでもうまくいくかもしれません...
エクスポートする時に、 DROP のオプションを付けておくと、重複データが登録すされることもないです。