2

サーバーはPHP 5.2.17で実行されており、3 つの引数を指定して get_html_translation_table() を実行しようとしています。関数を呼び出す方法は次のとおりです。

$text = get_html_translation_table(HTML_ENTITIES, ENT_QUOTES, "UTF-8");

という警告メッセージが表示されます

get_html_translation_table は最大で 2 つのパラメーターを想定しており、3 つ (ファイル名と行番号) を指定します。

PHPドキュメントによると、3 番目の引数はPHP 5.3.4 以降でサポートされていますが、3 番目の引数を追加することは、"UTF-8" で返される配列をエンコードする唯一の方法です。(醜い警告メッセージにもかかわらず機能します。)

すべての html 特殊文字とスペースをエンコードする関数を作成するには get_html_translation_table() が必要ですが、次の関数は 3 番目の引数がないと機能しません。

/**
 * Trying to encoding all html special characters, including nl2br()
 * @param string  $original
 * @return string
 */
function ecode_html_sp_chars($original) {
    $table = get_html_translation_table(HTML_ENTITIES, ENT_QUOTES, "UTF-8");
    $table[' '] = ' ';
    $encoded = strtr($original, $table);
    return nl2br($encoded);
}
4

1 に答える 1

1

2 つのオプション: PHP のバージョンを変更するか、htmlentities 関数を使用します。htmlentities では、encoding パラメータが 4.1 で追加されました。

例:

function ecode_html_sp_chars($original) {
    $encoded = htmlentities($original, ENT_QUOTES, "UTF-8");
    $encoded = str_replace(' ', ' ', $encoded);
    return nl2br($encoded);
}
于 2012-11-16T07:20:42.100 に答える