人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPのnl2br関数を使うと改行が<br />に変換されますが、
<br />ではなく<br>に変換したいです。
PHP5.2.xで改行を<br>に変換する方法は無いでしょうか?

●質問者: hellfencer
●カテゴリ:インターネット ウェブ制作
✍キーワード:PHP 関数
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● yoshifumi1975
●35ポイント ベストアンサー

preg_replace関数ではどうでしょうか。

正規表現で、改行文字にマッチさせ、それを、"
" で置き換えます。

以下はサンプルです。

<?php

$s=<<<END_OF_MSG
abc
def
ghi
END_OF_MSG;

echo preg_replace( '/\n|\r|(\r\n)/', "<br>", $s );
?>

http://www.php.net/manual/ja/function.preg-replace.php

◎質問者からの返答

ありがとうございます。とても参考になりました。

無事に変換する事が出来ました。


2 ● kn1967
●25ポイント

実際に実行した訳でも無いので本来はコメント欄に書くべきかとも思いましたが、

開けておられないので、本回答で失礼します。


【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にできないかを検討するほうがよろしいかもしれません。

PHP: nl2br - Manual

◎質問者からの返答

ありがとうございます。

実際にスクリプトを動かすのがレンタルサーバーなので

導入する権限が無いのですが、こんな方法もあるのですね。


3 ● cooper0524
●25ポイント

方法については既に回答者がおられますので割愛します。

回答で出ているロジックを関数にして使いまわせるようにすると

ソースの短縮+綺麗になるかと思います。

function _n2b($s){

return preg_replace( '/\n|\r|(\r\n)/', "
", $s );

}

あと、余談ではありますがHTML4.01上で
を使っても

解釈はしてくれますのでエラー等は出ないかと思います。

(HTMLの評価的には良くないのかもしれませんが…)

Yahoo! JAPAN

URLはダミーです

◎質問者からの返答

ありがとうございます。

確かにブラウザで見る分には/が入っていても問題無いんですが、

ソースを見るとやっぱり気になってしまいます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ