я вызываю 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;
}
нет никакого HTML в $row ['cQuotes'] и переменных Автора. это - форматирование CSS, которое удалено, когда htmlspecialchars реализован.
другая вещь, которую я заметил, была этим, если я удалил ENT_QUOTES
, это работает, но снова с ним, он удаляет форматирование. почему это так?
Проблема может заключаться в том, что функция h()
должна возвращать данные, а не передавать их эхом (исходя из того, как вы используете результат h()
)
Что вы имеете в виду под форматированием? Если вы имеете в виду код HTML, htmlspecialchars заменит эти важные для HTML символы на их сущности:
(взято отсюда: http://php.net/manual/en /function.htmlspecialchars.php)
Конечно, тогда никакое форматирование не будет иметь никакого эффекта. В этом суть htmlspecialchars ().