繁体   English   中英

回声句子中出现引号

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM