htmlspecialchars удаляет форматирование - PullRequest
1 голос
/ 23 июля 2010

Я вызываю функцию htmlspecialchars внутри другой функции в классе, но когда я делаю это, даже если данные отображаются, он удаляет все форматирование, отображающее данные в одной строке.

это код:

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. это форматирование css, которое удаляется при реализации htmlspecialchars.

Еще одна вещь, которую я заметил, это то, что если я удалил ENT_QUOTES, он работает, но опять же с ним, он удаляет форматирование. почему это так?

Ответы [ 2 ]

1 голос
/ 23 июля 2010

Проблема может заключаться в том, что функция h() должна возвращать данные, а не выводить их (в зависимости от того, как вы используете результат h())

1 голос
/ 23 июля 2010

Что вы подразумеваете под форматированием?Если вы имеете в виду HTML-код, htmlspecialchars заменит эти важные для HTML символы на их сущности:

  • '&' (амперсанд) становится '&'
  • '"' (двойная кавычка)становится '' ', когда ENT_NOQUOTES не установлен.
  • ' '' (одинарная кавычка) становится '' 'только тогда, когда установлен ENT_QUOTES.
  • ' <'(меньше чем) становится' <'</li>
  • '>' (больше чем) становится '>'

(взято отсюда: http://php.net/manual/en/function.htmlspecialchars.php)

Конечно, тогда ни одно из форматирования не будет иметь эффектаВ этом смысл htmlspecialchars ().

...