<?php
echo 'Привет ' . htmlspecialchars($_GET["name"]) . '!';
?>
Подразумевается, что пользователь ввел в браузере адрес http://example.com/?name=Hannes
Результатом выполнения данного примера будет что-то подобное:
Привет Hannes!
Вопрос:
Почему htmlspecialchars() не преобразовал строку $_GET["name"] в пустой набор символов?
Потому что htmlspecialchars() преобразовывает все html символы в их значения!
Что значит пустой набор символов?
BackUP, а каким образом он понел что $_GET["name"] что это php ведь $,_,[""] это html символы?
<a href='test'>Test</a>
Это отображается, после фильтрации, в исходом коде.
Во-вторых:
<?
echo 'Привет, '.htmlspecialchars($_GET[name], ENT_QUOTES);
?>
так правильнее $_GET фильтровать.
Может ему не нужно преобразовывать одинарную кавычку? Что значит правильнее?
Оно преобразовывается. Если хочешь в строке браузера что то видеть, то url_decode, url_encode
С точки зрения валидации и SEO оптимизации исходный код должен содержать код спецсимвола >, а не сам спецсимвол >. Проще говоря валидатор будет ругаться на открытый спецсимвол и Google-боту это не понравится.