php 中格式错误的 unicode/十六进制

发布于 2024-12-10 20:03:52 字数 763 浏览 0 评论 0原文

我想向 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() 也不起作用。到底如何转义这个字符串?为什么会失败?

I want to give a text to a DIV. This text has HTML tags, so I thought its enough to escape the " and ' characters. Full code:

<!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(""", '''), $a);
?>
<script type="text/javascript">
 document.getElementById('lay').innerHTML = '<?php echo $a; ?>';
</script>
</body>
</html>

but firefox said its malformed. Even htmlspecialchars() aint work. How the heck to escape this string? And why it fails?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

对你再特殊 2024-12-17 20:03:53

字符串末尾的“\x”现在尝试期待一个十六进制数字,您需要转义 x 前面的斜杠。

尝试添加三个斜杠

$a = 'Missing


argument 3 for Class::method(), called in X:\directory\dir2\dir3\\\x';

the "\x" at the end of you string is now trying to expect a hexadecimal digit you need to escape the slash in front of the x.

try adding three slashes

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

多情癖 2024-12-17 20:03:53

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

->格式错误的 Unicode 字符转义序列

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

I got the solution for this.
I was displaying image using physical path in browser:
"D:/wamp/www/project/images/imag.png"

-> malformed Unicode character escape sequence

I set it to URL then it resolved my problem
"http://siteurl/images/imag.png"

一个人练习一个人 2024-12-17 20:03:52

只需像这样使用 addslashes 即可:

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

正如文档所述 :

返回一个字符串,在需要的字符之前带有反斜杠
在数据库查询等中引用。这些字符是单引号('),
双引号 (")、反斜杠 () 和 NUL(NULL 字节)。

Just use addslashes like so:

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

As the documentation says:

Returns a string with backslashes before characters that need to be
quoted in database queries etc. These characters are single quote ('),
double quote ("), backslash () and NUL (the NULL byte).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文