PHP中var_dump输出含<的字符串截断问题求助
问题解析与解决方案
嘿,我来帮你搞清楚这个问题!
为什么var_dump只显示到RQC7?
这其实不是PHP的问题,而是浏览器的HTML解析在搞鬼!你字符串里的<是HTML实体,浏览器会自动把它解析成<字符。当解析到<lzC;_ytr@ewm6Eo时,浏览器会把这部分当成一个未定义的HTML标签,出于渲染规则,它会隐藏标签内部的内容,所以你看起来只显示了RQC7,但实际上PHP的var_dump已经完整输出了整个字符串。
会不会影响输入验证?
完全不会!
PHP内部存储的变量是完整的原始字符串,var_dump只是输出时的显示问题,和变量本身的内容无关。客户端通过$obj->getSharedSecret()获取到的是完整的共享密钥,输入验证时用的是变量的实际值,不会被浏览器的显示效果干扰。
如何看到完整的字符串?
给你几个简单的方法:
- 用
htmlspecialchars()转义后输出:
这样浏览器会把var_dump(htmlspecialchars('RQC7<lzC;_ytr@ewm6Eo'));<显示成原样,不会解析成<,就能看到完整内容了。 - 查看页面源代码:右键页面→选择「查看页面源代码」,在源代码里能看到
var_dump输出的完整原始字符串(源代码不会被浏览器解析成HTML)。 - 输出到日志文件:
打开日志文件就能看到完整的字符串内容。$secret = 'RQC7<lzC;_ytr@ewm6Eo'; file_put_contents('debug.log', var_export($secret, true));
内容的提问来源于stack exchange,提问作者Rumel
相关产品推荐
相关产品推荐

