<br />ではなく<br>に変換したいです。
PHP5.2.xで改行を<br>に変換する方法は無いでしょうか?
preg_replace関数ではどうでしょうか。
正規表現で、改行文字にマッチさせ、それを、"
" で置き換えます。
以下はサンプルです。
<?php $s=<<<END_OF_MSG abc def ghi END_OF_MSG; echo preg_replace( '/\n|\r|(\r\n)/', "<br>", $s ); ?>
preg_replace関数ではどうでしょうか。
正規表現で、改行文字にマッチさせ、それを、"
" で置き換えます。
以下はサンプルです。
<?php $s=<<<END_OF_MSG abc def ghi END_OF_MSG; echo preg_replace( '/\n|\r|(\r\n)/', "<br>", $s ); ?>
ありがとうございます。とても参考になりました。
無事に変換する事が出来ました。
実際に実行した訳でも無いので本来はコメント欄に書くべきかとも思いましたが、
開けておられないので、本回答で失礼します。
【1】組み込み関数をオーバーライドするための事前準備
PHP: runkit - Manual を導入し、php.ini等適宜設定。
【2】オーバーライド
下記、動作テストはしていません。
$kekka = '関数置換失敗'; if(runkit_function_copy('nl2br', 'original_nl2br')) { if(runkit_function_remove('nl2br')){ if(runkit_function_add('nl2br', '$str', "return preg_replace('/ \/>$/', '>', original_nl2br($str))")){ $kekka = '関数置換成功!'; } } } echo $kekka;
runkit を導入できるくらいの権限があるならば、
phpを5.3.xにできないかを検討するほうがよろしいかもしれません。
ありがとうございます。
実際にスクリプトを動かすのがレンタルサーバーなので
導入する権限が無いのですが、こんな方法もあるのですね。
方法については既に回答者がおられますので割愛します。
回答で出ているロジックを関数にして使いまわせるようにすると
ソースの短縮+綺麗になるかと思います。
function _n2b($s){
return preg_replace( '/\n|\r|(\r\n)/', "
", $s );
}
あと、余談ではありますがHTML4.01上で
を使っても
解釈はしてくれますのでエラー等は出ないかと思います。
(HTMLの評価的には良くないのかもしれませんが…)
URLはダミーです
ありがとうございます。
確かにブラウザで見る分には/が入っていても問題無いんですが、
ソースを見るとやっぱり気になってしまいます。
ありがとうございます。とても参考になりました。
無事に変換する事が出来ました。