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

如何在Windows CMD的PHP中用转义双引号输出^&|<>等特殊字符

问题根源

报错是Windows CMD命令行转义规则与PHP字符串转义规则两层冲突导致:

  • 第一层是CMD先解析整条命令,^&|<>都是CMD的内置特殊符号,默认会被CMD识别为命令控制符,不会作为普通字符传递给PHP
  • 第二层是PHP解析传入的代码字符串,双引号包裹的PHP字符串内部的双引号需要转义

双引号包裹代码场景的正确写法

所有需要输出的CMD特殊字符,都需要在CMD层面加^前缀转义后再传入PHP:

  • 输出^:php -r "echo \"^^\";"
  • 输出&:php -r "echo \"^&\";"
  • 输出|:php -r "echo \"^|\";"
  • 输出<:php -r "echo \"^<\";"
  • 输出>:php -r "echo \"^>\";"

如果需要同时输出多个特殊字符,直接拼接转义后的字符即可,例如输出^&<>的命令为:
php -r "echo \"^^^&^<^>\";"

原理解释

  1. CMD双引号字符串内,^作为转义符,仅对紧随其后的特殊字符生效:两个连续的^会被CMD解析为单个普通^传递给PHP;其他特殊字符&|<> 前加单个^即可被CMD识别为普通字符传入PHP
  2. 代码内用于转义PHP双引号的\不会被CMD解析,直接保留传入PHP,符合PHP双引号字符串转义规则

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 01:24:01