вот моя проблема:
я получаю строку обратно из моей базы данных с PDO в php-скрипте (вызывается в ajax-запросе):
...some code
$myString = $pdoObject['field'];
...some code
Строка содержит одну одинарную кавычку: ‘
example :
it's strange
позже в этом php-скрипте я поместил строку в длинную строковую переменную, которую я отправил обратно в мой ajax-запрос:
$wholeString = "<tr><td><span title='$myString'>Some Text</span></td></tr>";
тогда я отправляю это обратно:
json_encode ($ wholeString);
в моем запросе ajax я просто поместил результат в поле jquery:
...some code
success : function(response){
$("#myField").html(response);
}
...some code
НАЗВАНИЕ вещь всегда вырезана в цитате:
<tr><td><span title='it'>Some Text</span></td></tr>
если я попытаюсь использовать htmlentities или htmlspecialchars, прежде чем поместить $ myString в $ wholeString, это ничего не изменит … есть кое-что, что я где-то упускаю …
Спасибо за помощь
У вас в основном проблемы с инъекцией HTML. Вы должны использовать htmlspecialchars () для экранирования ВСЕХ мета-символов html в вашем тексте, включая '
например
$wholeString = "<tr><td><span title='" . htmlspecialchars($myString, ENT_QUOTES) . "'>Some Text</span></td></tr>";
Как написано в вашем коде, вы будете генерировать:
<tr><td><span title='It's strange'>Some text etc...
что заставит браузер анализировать тег span как
<span
title='It' // attribute "title" with value "It"s // unknown random attribute s
strange' // unknown random attribute "strange" with illegal single-quote
Других решений пока нет …