3

私は小さな Web アプリのリファクタリングを扱っていました。一晩中。今日、テストを開始して最初に見つけたバグは、システムの PHP 関数の問題でしnl2br()た。

私のローカルホストには PHP バージョン5.2.9があり、バージョン4.0.5からのPHP サイトで見られるように、XHTMLに準拠しています。 nl2br()

次に、 2番目の引数なしでnl2br()戻り値が ではなく false に設定される理由がまったくわかりません。<br><br />

このバグを見つけた私の方法は次のとおりです。

public function eliminateTags($msg) {
    $setBrakes = nl2br($msg);
    $decodeHTML = htmlspecialchars_decode($setBrakes);

    # Check PHP version
    if((int)version_compare(PHP_VERSION, '4.0.5') == 1) {
        $withoutTags = strip_tags($decodeHTML, '<br />');
    } else {
        $withoutTags = strip_tags($decodeHTML, '<br>');
    }

    return $withoutTags;
}
4

1 に答える 1

4

この関数で何を達成しようとしているのか理解できません。まず、改行ごとに HTML 改行を挿入し、改行以外のすべてのタグを削除します。

最初にタグを削除してから、HTML の改行を挿入する方が賢明ではないでしょうか?

public function eliminateTags($msg) {
    $decodeHTML = htmlspecialchars_decode($msg);
    $withoutTags = strip_tags($decodeHTML);
    $setBreaks = nl2br($withoutTags);

    return $setBreaks;
}

編集:

どうやら使い方が間違っているようですstrip_tags()。どのタグを除外するかを PHP に問い合わせる必要があり<br>ます<br />。PHP に除外<br />を要求することは、除外を要求するようなものです。たとえば、<p></p>これは機能しません。

つまり、PHP のバージョンを確認する必要はありませんstrip_tags()。すべてのバージョンでそのまま機能します。

于 2010-07-04T08:57:22.567 に答える