когда у меня есть такое значение в базе данных («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=""foo"" />
избегая конфликтов с 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}' />" ; ?>