【问题标题】:Passing PHP string to HTML href" attribute apostroph problem将 PHP 字符串传递给 HTML href" 属性撇号问题
【发布时间】:2011-07-11 02:17:48
【问题描述】:

我正在尝试将字符串从 PHP 变量传递到 HTML

 <a href="javascript:deleteProduct('<?=addslashes($row['productName'])?>');"

问题在于撇号。该字符串可能同时包含单撇号和双撇号 ' 和 " ,如下例所示:

<a href="javascript:deleteProduct('Richdel, 2400\', 1\", fi fara solenoid');"

由于不正确使用撇号,语法错误,它不会触发Javascript函数。它处理为 \" 将是 href 属性值的结尾。

我该如何解决这个问题?

【问题讨论】:

    标签: javascript quotes syntax-error apostrophe double-quotes


    【解决方案1】:
    <?= htmlentities(addslashes($row['productName'])) ?>
    

    会将"s 转换为&amp;quot;,因此它们将进入HTML。

    【讨论】:

    • 谢谢。它完美地工作,即使在 javascript alert('[...]') :)
    【解决方案2】:

    一个简单的字符串替换将完全删除这两种类型的引号。

    <?php echo str_replace("'", '', str_replace('"', '', $row['product'])); ?>
    

    【讨论】:

    • 目标不是破坏数据。如果可以转义数据(确实如此),那比仅仅删除它要好。
    • 该示例的目标大概是创建一个链接以删除名为Richdel, 2400', 1", fi fara solenoid 的产品。当您没有'" 时尝试这样做。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-23
    • 2016-03-05
    相关资源
    最近更新 更多