如何使用stringr::str_replace()/str_replace_all()添加转义字符?
解决单引号/双引号转义失败的问题
你的问题核心是str_replace的参数顺序搞反了,函数的正确语法是str_replace(要搜索的字符串, 替换后的字符串, 目标字符串),你当前的写法把目标字符串和搜索参数的位置弄混了,导致替换逻辑完全错误。
要实现将字符串中的单引号'替换为\',正确的写法如下:
$original = "Can't"; $escaped = str_replace("'", "\\'", $original); // 最终输出:Can\'t
如果需要同时处理单引号和双引号,可通过数组批量替换:
$original = 'She said "I can\'t finish this"'; $searchList = array("'", '"'); $replaceList = array("\\'", '\\"'); $escaped = str_replace($searchList, $replaceList, $original); // 最终输出:She said \"I can\'t finish this\"
注意:在PHP中,双引号包裹的字符串里,反斜杠需要额外转义(用\\表示一个实际的\);如果用单引号包裹字符串,仅在转义单引号时需要加反斜杠,其他场景可直接书写\'。
内容的提问来源于stack exchange,提问作者Art
相关产品推荐
相关产品推荐

