php var值包含引号

时间:2011-11-08 06:19:33

标签: php variables attributes echo quotes

所以......我有一个mysql_fetch_array,当一些mysql数据包含单引号或双引号时,我遇到了问题。这是我的代码的愚蠢版本:

while($row=mysql_fetch_array($list)) {
    echo "<tr>";
    echo "<td onclick='edit_form(\"" . $row['item'] . "\");'>" . $row['item'];
    echo "</td></tr>";
    }

edit_form()函数用于将当前项的值发送回表单中输入的值,以便用户可以轻松编辑其条目,然后向mysql发送UPDATE命令以及正确的主要内容密钥id(由于不相关而遗漏了)。我唯一的问题是,如果用户将单引号或双引号放入表单中,那么它会混淆onclick属性。请帮忙!!我是php的新手,无法解决这个问题。我已经搞砸了htmlentites()和html_entity_decode(),但我仍然没有在哪里。非常感谢你!

4 个答案:

答案 0 :(得分:2)

$row['item']上使用htmlspecialchars,然后再将其插入您的文档中。

所以你的“愚蠢”代码应该是:

while($row=mysql_fetch_array($list)) { 
    $item = htmlspecialchars($row['item']);
    echo "<tr>"; 
    echo "<td onclick='edit_form(\"" . $item . "\");'>" . $item;
    echo "</td></tr>"; 
} 

答案 1 :(得分:0)

我建议使用json_encode。这样你就不必担心htmlspecialchars可能遗漏的特殊情况(例如换行符)。

while($row=mysql_fetch_array($list)) {
    echo "<tr>";
    echo "<td onclick='edit_form(" . json_encode($row['item'], JSON_HEX_APOS) . ");'>" . $row['item'];
    echo "</td></tr>";
}

答案 2 :(得分:0)

在代码中尝试以下行而不是原始行,看看它是否有效:

echo "<td onclick='edit_form(\"" . str_replace('"',"&quote;",$row['item']) . "\");\">" . $row['item'];

如果您想要显示$ item字段,只需将其替换为“e;而不是'”。例如:

$qoute_free= str_replace('&quote','"',$passed_value);

如果您在javascript中使用它,则功能如下:

function edit_form(passed_value)
{
  new_value=passed_value.replace(/&quote;/g,'"');
}

答案 3 :(得分:0)

我只是将值重新放回<form>(当他们点击<td>时),当他们点击SUBMIT时,它会将数据定向到使用MySQL UPDATE的其他.php文件而不是INSERT。我终于找到了一些有效的代码!

  • $list是我在文档顶部运行的mysql_query
  • $item是我在MySQL中的一个专栏的标题

    while($row=mysql_fetch_array($list)){
        $item = json_encode($row['item']);
        $item = str_replace("'","&#39;",$item);
        echo "<td onclick='edit_form(" . $item . ");'>" . $row['item'] . "</td>";
    }
    

现在,当点击<form>时(jQuery <td>),它会在input.val($item)中正确显示,并通过$row['item']正确显示在表格中。我真的不明白它是如何工作的(编码如何使其工作)但我很高兴它。 Crazyness !!!!谢谢你的回复!并感谢您的努力!!