php中格式错误的unicode / hexadecimal

时间:2011-10-19 06:47:28

标签: php javascript utf-8 escaping

我想给DIV一个文字。这个文本有HTML标签,所以我认为它足以逃避“和”字符。完整代码:

<!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>

但是Firefox表示其格式不正确。甚至htmlspecialchars()也不起作用。如何逃脱这根弦?为什么失败?

3 个答案:

答案 0 :(得分: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(空字节)。

答案 1 :(得分:1)

你字符串末尾的“\ x”现在试图期望你需要一个十六进制数字来逃避x前面的斜线。

尝试添加三个斜杠

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

答案 2 :(得分:1)

我得到了解决方案。 我在浏览器中使用物理路径显示图像: “d:/wamp/www/project/images/imag.png”

- &GT;格式错误的Unicode字符转义序列

我将其设置为网址,然后解决了我的问题 的 “http://siteurl/images/imag.png”