Каков наилучший способ отобразить результаты из базы данных в HTML-код в PHP? - PullRequest
2 голосов
/ 08 февраля 2010

когда у меня есть значение, подобное этому в базе данных ("foo")

как я могу повторить это без какого-либо конфликта с HTML-кодом

уведомление

<input type="text" value="<? echo '"foo"'; ?>" />

результат будет таким

<input type="text" value=""foo"" />

как я могу это исправить?

Ответы [ 5 ]

3 голосов
/ 08 февраля 2010

использование urlencode или htmlspecialchars

<a href="<?php echo urlencode($dburl)?>" title="<?php echo htmlspecialchars($dbvalue)?>">link</a>
2 голосов
/ 08 февраля 2010

Вы можете использовать htmlentities, чтобы преодолеть эту проблему следующим образом:

<input type="text" value="<? echo htmlentities('"foo"'); ?>" />

это вернет

<input type="text" value="&quot;foo&quot;" />

избегая любого конфликта с HTML.

1 голос
/ 08 февраля 2010

htmlspecialchars () в основном, например

<input type="text" value="<? echo htmlspecialchars($value, ENT_QUOTES); ?>" />

ENT_QUOTES является необязательным и также кодирует одинарную кавычку '.

Я использовал $ value, так как я не уверен, что именно у вас есть в базе данных (с кавычками или без?), Но она будет находиться в некоторой переменной, если вы все равно захотите ее использовать, поэтому я назвал это значение.

Поскольку вышесказанное немного громоздко, я сделал для него обертку:

// htmlents($string)
function htmlents($string) {
  return htmlspecialchars($string, ENT_QUOTES);
}

Так что вы можете

<input type="text" value="<? echo htmlents($value); ?>" />

Не следует путать с существующей htmlentities (), которая кодирует все нестандартные символы. htmlspecialchars () только кодирует &, <,>, "и", что больше подходит для страниц UTF8 (все ваши веб-страницы UTF8, верно?; -).

0 голосов
/ 08 февраля 2010

Во-первых, не используйте короткие теги ('

Далее, ваш HTML искажен, потому что у вас есть дополнительный набор кавычек. Поскольку вы, похоже, используете подход встраивания PHP в HTML, быстрое решение проблемы:

<input type="text" value="<?php echo 'foo'; ?>" />

... хотя, поскольку это значение поступает из вашей базы данных, оно будет храниться в переменной, возможно, в массиве, поэтому ваш код должен выглядеть примерно так:

<input type="text" value="<?php echo $db_row['foo']; ?>" />

Для ясности, большинство программистов пытались бы исключить переключение между синтаксическим анализом PHP и непарсированным кодом, используя систему шаблонов, такую ​​как smarty или ....

<?php
 ....
 print "<input type='text' value='$db_row[foo]' />\n";
 ....
?>

(Обратите внимание, что

1) когда переменная находится в двойных кавычках с блоком PHP, значение автоматически подставляется

2) при обращении к записи ассоциативного массива в строке, заключенной в двойные кавычки, индекс НЕ цитируется.

НТН

C.

0 голосов
/ 08 февраля 2010
<?php

echo "<input type='text' value='{$foo}' />" ;

?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...