2015-08-19 19 views
-1

Я сделал функцию для своего сайта, которая преобразует специальные символы, если кто-то попытается вырвать систему с помощью двоеточия, точек с запятой, одинарных кавычек или двойных кавычек. Я создал массив find, который является переменной find в str_replace и изменяет, которая будет обмениваться.Объекты html не отображаются должным образом

$find = array('"','\'','<3'); 
$change = array('&quot;','&apos;','&hearts;'); 
$str = "This is a test ' " <3."; 

$str = str_replace($find, $change, $str); 
echo $str; 

Он буквально печатает коды, как & Quot и, предположительно, он должен быть эхом в двойные кавычки ("). Я обновил страницу. Она еще повторяющий реальный код.

Любая помощь?

+0

Как выглядит выход * raw * сервера? Попробуйте с 'curl' в командной строке или таким образом удалить любую путаницу, которую может добавить браузер. – deceze

+0

Что вы имеете в виду? можете добавить ответ напрямую, чтобы я мог чему-то научиться. – Bido262

+1

Это еще не ответ, я прошу вас отлаживать больше. Вы знаете, как использовать командную строку для запуска 'curl'? – deceze

ответ

2

Ваш код работает, но вы должны заботиться с PHP кавычки в строке:.

$find = array('"','\'','<3'); 
$change = array('&quot;','&apos;','&hearts;'); 
$str = "This is a test ' \" <3.\""; // look at this line 

$str = str_replace($find, $change, $str); 
echo $str; 

Это работает Смотрите это работает: http://phpfiddle.org/lite?code=

+0

phpfiddle не имеет кодового запроса. Не могу посмотреть. И, кстати, что, если кто-то вводит двойные кавычки только как просто набрав («) и нажав кнопку« Отправить », он все равно сломает систему. – Bido262

+0

Вы должны использовать функцию' htmlentities() ': http://php.net/manual /es/function.htmlentities.php Чтобы просмотреть, как он работает в phpfiddle, просто скопируйте и вставьте мой код в phpfiddle.org. Я не знаю, как ссылка не работает. –

+0

Спасибо большое, отлично. – Bido262