PHP echo生成onclick方法引号转义问题求助
PHP echo 生成 onclick 事件的引号转义问题
你的代码因引号嵌套冲突导致渲染异常,原代码如下:
echo "<div class='col-sm-3' onclick='ViewItem('" . $item['item_id'] . "')' style='cursor:pointer'>";
目标是生成正确的HTML:
<div class='col-sm-3' onclick='ViewItem("1")' style='cursor:pointer'>
解决方法
方法一:转义内部双引号
在PHP字符串中用\转义双引号,让浏览器能正确识别函数参数的引号:
echo "<div class='col-sm-3' onclick='ViewItem(\"" . $item['item_id'] . "\")' style='cursor:pointer'>";
方法二:调换引号层级
外层用双引号包裹字符串,内部函数参数用单引号,同时利用PHP双引号的变量插值特性:
echo "<div class='col-sm-3' onclick='ViewItem(\'{$item['item_id']}\')' style='cursor:pointer'>";
方法三:使用HEREDOC语法
这种写法无需频繁转义引号,可读性更强:
echo <<<HTML <div class='col-sm-3' onclick='ViewItem("{$item['item_id']}")' style='cursor:pointer'> HTML;
问题根源
原代码中onclick用单引号包裹函数调用,函数参数又使用单引号,导致浏览器解析时会把onclick='ViewItem('截断,后续内容无法被识别为事件的一部分,进而引发渲染异常。
内容的提问来源于stack exchange,提问作者Alexander Raymak
相关产品推荐
相关产品推荐

