2011-10-19 3 views
0

Я хочу дать текст в DIV. Этот текст имеет HTML-теги, так что я думал, что его достаточно, чтобы избежать "и" символы Полный код:.malformed unicode/hexadecimal в php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> 
<head> 
</head> 
<body> 
<div id="lay">.</div> 
<?php 
$a = 'Missing<hr />argument 3 for Class::method(), called in X:\directory\dir2\dir3\x'; 
$a = str_replace(array("\"", "'"), array("&quot;", '&#039;'), $a); 
?> 
<script type="text/javascript"> 
document.getElementById('lay').innerHTML = '<?php echo $a; ?>'; 
</script> 
</body> 
</html> 

но светлячок сказал, что его уродливы даже htmlspecialchars() Эйнт работа Как щеколда избежать этой строки..? И почему он терпит неудачу?

ответ

3

Просто используйте addslashes так:

$a = 'Missing<hr />argument 3 for Class::method(), called in X:\directory\dir2\dir3\x'; 
$a = addslashes($a); 
$a = str_replace(array("\"", "'"), array("&quot;", '&#039;'), $a); 

Как the documentation says:

Возвращает строку с обратной косой черты, прежде чем символы, которые должны быть указаны в запросов к базе данных и т.д. Эти символы являются одинарные кавычки ('), двойная кавычка ("), обратная косая черта() и NUL (байт NULL).

+0

ой, то это защищает от всего? Нет других вещей (двоичный, unicode, ничего), чтобы убежать от? – user893856

+1

см. Обновленный ответ –

1

в «\ х» на конец вами строки теперь пытается ожидать шестнадцатеричную цифру вам нужно слеш перед х.

попробуйте добавить три косые

$a = 'Missing<hr />argument 3 for Class::method(), called in X:\directory\dir2\dir3\\\x';

+1

Escape последовательностей http://php.net/manual/en/regexp.reference.escape.php – david

1

У меня есть решение для этого. я показывал изображение, используя физический путь в браузере: «D: /wamp/www/project/images/imag.png»

-> уродливы экранирующего символа Unicode последовательность

Я установил его URL, то это разрешила мою проблему «http: //siteurl/images/imag.png»

+0

Возможно, вы использовали json_encode для вывода переменных в Javascript ... – Sven