引号出现在回声句子中

Quote marks appearing in echo sentence

本文关键字:回声句 句子 回声      更新时间:2023-09-26

我正在使用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" Generales)。

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

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

如果不引用

属性,则属性值将在标记的第一个空格或末尾结束。

在点击周围添加引号...

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>";

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