You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP中chr("0x03")报“A non well formed numeric value encountered”的原因

问题原因解析

这个问题我之前排查过,核心原因是chr()函数的参数要求加上PHP 7.1之后更严格的类型转换规则导致的:

  • 首先,chr()函数的设计是接受一个整数类型的参数,用来返回对应的ASCII字符。你传入的"0x03"是一个字符串,本质是十六进制值的文本表示,并非整数。
  • 在PHP 7.1及更高版本中,对字符串转整数的逻辑做了严格限制:如果字符串不是标准的十进制数字格式(比如包含x这类非数字字符,或者带0x十六进制前缀),PHP不会再自动将其解析为对应进制的整数,而是尝试转换时判定为“格式不正确的数值”,从而抛出你看到的A non well formed numeric value encountered警告。
  • 举个对比:旧版本PHP可能会把"0x03"偷偷转成整数3,但7.1开始这种“容错”被移除了,因为"0x03"本身不是合法的十进制数字字符串,转换失败就触发了警告。

解决方法

如果你需要用十六进制值来调用chr(),有两种靠谱的方式:

  1. 直接使用十六进制整数字面量(不要加引号):chr(0x03)
  2. 先把字符串转换成整数,再传入:chr(hexdec("0x03")) 或者 chr(intval("0x03", 16))

内容的提问来源于stack exchange,提问作者kolle1703

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 09:05:29