PHP 字符串被剪短

发布于 2024-09-28 02:23:58 字数 288 浏览 3 评论 0原文

为什么这段代码

$string = "!@#$%^&*(<[email protected]"; 
echo $string; 

只输出:

!@#$%^&*(

Is this is a PHP bug?

Why does this code

$string = "!@#$%^&*(<[email protected]"; 
echo $string; 

only output:

!@#$%^&*(

Is this is a PHP bug?

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

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

发布评论

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

评论(4

此岸叶落 2024-10-05 02:23:58

因为<是 HTML 中的保留字符 :)

使用 <>

阅读此内容以获取更多信息

http://www.w3schools.com/HTML/html_entities.asp

您可以使用函数 htmlspecialchars 来转换此类特殊字符

http://php.net/manual/en/function.htmlspecialchars.php

Because < is a reserved character in in HTML :)

Use < and >

Read this for more information

http://www.w3schools.com/HTML/html_entities.asp

You can use the function htmlspecialchars to convert such special chars

http://php.net/manual/en/function.htmlspecialchars.php

怀念你的温柔 2024-10-05 02:23:58

我没有看到:

http://ideone.com/zhycx

也许你有一些奇怪的字符你的文件?确保您也在源代码上使用“正常”编码。

I'm not seeing that:

http://ideone.com/zhycx

Perhaps you've got some weird characters in your file? Make sure you're using a "normal" encoding on your source code, as well.

爱她像谁 2024-10-05 02:23:58

您需要执行以下操作:

echo htmlentities($string);

在浏览器上显示字符串。这是因为浏览器将字符串中的 < 解释为 HTML 标记的开头。

因此,造成这种行为的不是 PHP,而是浏览器。如果您在命令行上执行完全相同的显示,您将看到所有字符。

You need to do:

echo htmlentities($string);

to display the string as it is on a browser. This is because the < in the string is interpreted by the browser as start of a HTML tag.

So it's not PHP but the browser that is causing this behavior. If you do the exact same display on a command line, you'll see all the characters.

葬花如无物 2024-10-05 02:23:58

如果您在 Web 浏览器中查看输出,则 < 会开始一个标记,并且通常不会显示,而是在 HTML 文档结构解析器中进行解释。此外,双引号字符串内的 $ 会被插入作为其后面的变量名称;尝试使用单引号,这样就不会发生这种情况。

试试这个:

$string = '!@#$%^&*(<[email protected]';
echo htmlentities($string);

If you are viewing the output in a web browser, then the < begins a tag and is usually not displayed but interpreted in the HTML document structure parser. Also, a $ inside of a double-quoted string is interpolated as the variable name that follows it; try using single quotes where this won't happen.

Try this:

$string = '!@#$%^&*(<[email protected]';
echo htmlentities($string);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文