Мой веб-сайт предлагает возможность сохранять пользовательские данные и искать их снова. При поиске все данные печатаются, содержащие запрос. Я хочу, чтобы соответствующие подстроки были выделены.Санизировать и выделять текст с помощью HTML одновременно
В упрощенном виде я сделал это так:
function highlight_and_sanitize_search_result($data, $query){
$highlighted = str_replace(
$query,
'<span class="highlight">' . $query . '</span>',
$data
);
return sanitize($highlighted);
}
При печати возвращаемого значения функции, мой HTML-код не продезинфицировать. Но когда я дезинфицировать его, мой <span>
ложно продезинфицировать тоже:
Query: match
Data: Here is the match
Output: Here is the <span class="match">match<span>
Так я думал, что я мог бы поместить его в другую сторону вокруг:
function sanitize_and_highlight_search_result($data, $query){
$sanitized = sanitize($highlighted);
return str_replace(
$query,
'<span class="highlight">' . $query . '</span>',
$data
);
}
Но это также приводит к ошибке, если вам поиск запроса, который является частью продезинфицировать HTML код:
Query: &am
Data: You & me
Output: You <span class="highlight">&am</span>p; me
Так что это правильный способ сделать как - санитарии и выделения?