PHP调用YouTube API时setDescription方法添加多余转义斜杠问题
解决YouTube API上传时单引号带转义斜杠的问题
问题根源分析
出现这个情况大概率是字符串被重复转义,或者PHP的magic_quotes_gpc配置开启(老版本PHP常见),导致表单/请求传入的内容被自动加上转义斜杠,后续处理又没正确还原。
具体解决步骤
先检查
magic_quotes_gpc状态
执行这段代码确认配置:echo get_magic_quotes_gpc();如果返回
1,说明该配置开启,它会自动对GET/POST/COOKIE的内容转义。这时候要递归处理所有请求变量:function stripslashes_deep($value) { $value = is_array($value) ? array_map('stripslashes_deep', $value) : stripslashes($value); return $value; } // 处理POST/GET/COOKIE变量 $_POST = stripslashes_deep($_POST); $_GET = stripslashes_deep($_GET); $_COOKIE = stripslashes_deep($_COOKIE);处理后再获取
$video_description,就能拿到未被自动转义的原始内容。去掉多余的双引号包裹
你的代码里用了"$video_description",完全没必要,直接传入变量即可:$videoSnippet->setDescription($video_description);双引号包裹会让PHP解析变量内的转义字符,反而可能导致转义逻辑混乱。
针对单个变量强制还原
如果上面的方法没用,直接对变量做多次转义还原(适用于被多次转义的情况):// 先判断是否有转义斜杠,再逐步还原 while (strpos($video_description, '\\') !== false) { $video_description = stripslashes($video_description); } $videoSnippet->setDescription($video_description);排查代码中多余的转义操作
检查接收$video_description的代码,有没有用addslashes()、mysqli_real_escape_string()之类的函数手动转义?如果有,去掉这些多余的操作——YouTube API会自行处理字符串的安全传输,不需要提前转义。
内容的提问来源于stack exchange,提问作者needsumhelp
相关产品推荐
相关产品推荐

