Убрать теги из текста? - PullRequest
       7

Убрать теги из текста?

1 голос
/ 06 августа 2011

У меня есть форма.Когда пользователи отправляют данные, мой скрипт проверяет текст на php / html с помощью

$text1 = strip_tags($text);

Затем он вставляет данные в базу данных.Но когда пользователи отправляют что-то вроде этого: «Я полностью <3 этого сайта», он только вставляет: «Я полностью».Как я могу это исправить? </p>

(мне нужно удалить теги)

Ответы [ 5 ]

3 голосов
/ 06 августа 2011

Вам нужно убежать от этих персонажей, а не убирать их. Вы можете использовать функцию htmlspecialchars для ее достижения. Например:

$new = htmlspecialchars("<a href='test'>Test</a>", ENT_QUOTES);
echo $new; // &lt;a href=&#039;test&#039;&gt;Test&lt;/a&gt;

Он экранирует специальные символы в виде сущностей HTML, поэтому они будут правильно отображаться.

0 голосов
/ 06 августа 2011

, если вы хотите поместить его в свою базу данных, не используйте strip_tags, а соответствующую mysqli_real_escape_string функцию или подготовленные операторы . позже, при выводе содержимого на html-страницу, используйте htmlspecialchars

0 голосов
/ 06 августа 2011

Хотя правильным ответом будет использование htmlentities , как отмечено в других ответах, у вас всегда может быть массив для предварительной обработки $text перед удалением тегов.

$search = array('<3', ':<');
$replace = array('&lt;3', ':&lt;');

echo strip_tags(str_replace($search, $replace, $text));

Очевидно, вам придется обновлять ваш массив каждый раз, когда вы получаете новый экземпляр этих особых случаев, поэтому, возможно, вам нужно подумать о правильном результате.

0 голосов
/ 06 августа 2011

Я не уверен , почему вы хотите это сделать, но вы можете удалить < и >, выполнив

$stripped = str_replace(array('<', '>'), '', $text);

но я бы посоветовал экранировать строку вместо этого

$escaped = htmlspecialchars($text);
// or
$escaped = htmlentities($text);
0 голосов
/ 06 августа 2011

Вы можете заменить теги их эквивалентами, не удаляйте их.Используйте

htmlspecialchars()

...