Каков наилучший способ отразить результаты из базы данных в html-код в PHP?

когда у меня есть такое значение в базе данных («foo»)

как я могу эхо его без каких-либо конфликтов с html-кодом

уведомление

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

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

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

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

использовать urlencode или htmlspecialchars

 <a href="<?php echo urlencode($dburl)?>" title="<?php echo htmlspecialchars($dbvalue)?>">link</a> 

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

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

это вернет

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

избегая конфликтов с html.

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

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

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

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

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

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

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

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

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

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

Затем ваш 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.

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