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

PHP字符串含单双引号引发语法错误的解决方法

解决PHP字符串中引号嵌套的语法错误问题

首先,你遇到的Parse error是语法解析阶段的错误,代码还没运行到addslashes()就已经报错了。问题出在第二行的echo语句里:

echo $str . " New "home" away from home when in Bangkok";

你用双引号"包裹了整个字符串,但字符串内部又出现了"home"的双引号——PHP会把第一个"之后的home前面的"当成字符串的结束标记,后面的home就变成了无意义的裸文本,自然触发语法错误。

解决方法有这几种,按需选择:

1. 转义字符串内部的引号

在双引号字符串里的双引号前加上反斜杠\,告诉PHP这是字符串的一部分,不是结束标记:

<?php 
$str = "Couldn't pay via card"; 
// 转义内部的双引号
echo $str . " New \"home\" away from home when in Bangkok"; 
echo addslashes($str) . " This is safe in a database query."; 
?>

注:双引号字符串里的单引号不需要转义,所以$str里的Couldn't是正常的。

2. 混合使用单双引号包裹字符串

如果字符串里包含大量双引号,可以改用单引号'包裹整个字符串,这样内部的双引号不需要任何转义:

<?php 
$str = "Couldn't pay via card"; 
// 用单引号包裹整个字符串,内部双引号直接使用
echo $str . ' New "home" away from home when in Bangkok'; 
echo addslashes($str) . " This is safe in a database query."; 
?>

反过来,如果字符串里有很多单引号,用双引号包裹也是同理。

关于addslashes()的误区

你可能误解了addslashes()的作用:它是运行时用来给字符串添加转义字符(比如存入数据库时防止SQL注入),但它无法解决语法解析阶段的引号错误。只有先把字符串的语法写对,代码能正常运行了,addslashes()才能发挥作用。另外,现在更推荐用预处理语句来处理数据库操作,比addslashes()更安全可靠。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:20:16