[英]Quote marks appearing in echo sentence
我正在使用PHP构建网页。 我有一个带有多个按钮的桌子。 我使用以下代码在for循环中构建按钮:
echo "<tr><td><input type='button' value='".$row['Descripcion']."'";
echo "onclick=EliminarHashTag('".$row['ID']."','";
echo $row['Descripcion'];
echo "','Norma','".$Codigo."','".$Organizacion."')> </td></tr>";
只要我的变量是由单个单词组成的字符串,这一切都可以正常工作。例如,如果它是$row['Descripcion']="manometros"
,(不带空格的字符串),则回显将输出以下内容:
<input type="button" value="Manometros" onclick="EliminarHashTag('14','Manometros','norma','k-300','pdvsa')="">
但是,如果我的变量是由带有空格$row['Descripcion']="Criterios Generales"
的字符串组成的,则echo将在空格中输出引号,从而弄乱了javascript函数调用语法,从而使代码无法正常工作(Criterios”将军)。
<input type="button" value="Criterios Generales" onclick="EliminarHashTag('14','Criterios" generales','norma','k-300','pdvsa')="">
我在php.net上阅读了echo文档,但是我没有提到这个问题。 难道我做错了什么?
如果您不引用属性,则属性值在第一个空格或标记的结尾处结束。
在onclick周围添加引号...
echo " onclick=\"EliminarHashTag('".$row['ID']."','";
^^ ^^
和
echo "','Norma','".$Codigo."','".$Organizacion."')\"> </td></tr>";
^^
现在,如果任何值都带有双引号,则需要将其转义为html标题。 否则,您需要将单身换成双身。
您的HTML无效,调试工具(例如firebug和chrome开发人员工具)会尝试对其进行更正以显示正确的domtree。
您不仅会丢失onclick
属性的右引号,而且还会通过在onclick函数参数中使用相同类型的引号来破坏封装:
echo '<tr><td><input type="button" value="'.$row['Descripcion'].'"';
echo 'onclick="EliminarHashTag(\''.$row['ID'].'\',\'';
echo $row['Descripcion'];
echo '\',\'Norma\',\''.$Codigo.'\',\''.$Organizacion.'\')"> </td></tr>';
尝试用反斜杠转义引号:
echo "onclick=EliminarHashTag('".$row['ID']."',\"";
echo $row['Descripcion'];
echo "\",'Norma','".$Codigo."','".$Organizacion."')> </td></tr>";
我将您的变量前后的'
更改为\\"
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.