1

クラスの別の関数内で htmlspecialchars 関数を呼び出していますが、これを行うと、データが表示されても、データを 1 行で表示するすべての書式設定が削除されます。

これはコードです:

class Name {
    . .. .
    public function h($s) 
    {
    echo htmlspecialchars($s, ENT_QUOTES);
     }

    public function formatQuotes($row)
    {

    return "<p id=\"ab_quotes\">" . this->h($row['cQuotes']) . "</p>"
    . "<p id=\"ab_author\">" . this->h($row['vAuthor']) . "</p>";             
    }

}

htmlspecialchars 関数への参照を削除すると、データが表示されます。

アップデート:

これは私が適用したcssです:

p#ab_quotes{
    font-size: 22px;
    word-wrap: break-word;
    position: absolute;
    top: 80px;
    left: 5px;
    padding: 8px 6px;
    }

p#ab_author {
    font-size: 15px;
        position: absolute;
    top: 200px;
    right: 5px;
    padding: 8px 6px;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color: #EB3B55;
    }

$row['cQuotes'] および Author 変数内に html はありません。htmlspecialchars が実装されたときに削除されるのは css フォーマットです。

私が気付いた別のことは、私が削除した場合ENT_QUOTES、それは機能しますが、再びそれを使用すると、フォーマットが削除されるということです。これはなぜですか?

4

2 に答える 2

1

問題は、関数h()がデータをエコーするのではなくデータを返す必要があることです (の結果の使用方法に基づいてh())

于 2010-07-23T11:35:03.170 に答える
1

フォーマットするとはどういう意味ですか? HTML コードを意味する場合、htmlspecialchars は HTML にとって重要なこれらの文字をエンティティに置き換えます。

  • '&' (アンパサンド) は '&' になります
  • ENT_NOQUOTES が設定されていない場合、'"' (ダブル クォーテーション) は '"' になります。
  • ENT_QUOTES が設定されている場合のみ、''' (シングル クォーテーション) が ''' になります。
  • '<' (より小さい) は '<' になります
  • '>' (より大きい) は '>' になります

(ここから取得: http://php.net/manual/en/function.htmlspecialchars.php )

もちろん、その場合、どのフォーマットも効果がありません。それが htmlspecialchars() のポイントです。

于 2010-07-23T11:10:49.987 に答える