引号出现在echo句中

时间:2014-12-31 03:38:29

标签: javascript php echo

我正在使用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",(没有空格的字符串)echo输出如下:

<input type="button" value="Manometros" onclick="EliminarHashTag('14','Manometros','norma','k-300','pdvsa')="">

但是如果我的变量是由带有空格$row['Descripcion']="Criterios Generales"的字符串组成的,那么echo会在空格中输出引号,弄乱javascript函数调用语法,从而使代码不起作用(Criterios“Generales)。” / p>

<input type="button" value="Criterios Generales" onclick="EliminarHashTag('14','Criterios" generales','norma','k-300','pdvsa')="">

我在php.net上阅读了echo文档,但我没有看到这个问题。我做错了吗?

3 个答案:

答案 0 :(得分:1)

如果不引用属性,则属性值将在第一个空格或标记末尾结束。

在onclick周围添加引号......

echo " onclick=\"EliminarHashTag('".$row['ID']."','";
      ^^       ^^       

echo "','Norma','".$Codigo."','".$Organizacion."')\"> </td></tr>"; 
                                                  ^^

现在,如果任何值都有双引号,则需要将其作为html权限进行转义。或者您需要将单个换成双倍。

答案 1 :(得分:1)

您的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>';   

答案 2 :(得分:0)

尝试使用反斜杠转义引号:

    echo "onclick=EliminarHashTag('".$row['ID']."',\"";
    echo $row['Descripcion'];
    echo "\",'Norma','".$Codigo."','".$Organizacion."')> </td></tr>";

我将变量前后的'更改为\"