3

如何将此代码与所有单引号和双引号结合起来。我已经尝试了几种组合,但我无法使其工作。这是我最后一次尝试所以请帮忙。

处理长字符串时有什么好的方法?

$html .='<a href="" onClick="$.ajax({type: "POST",url: "delete_pic.php",data:{id:"'.$row['id'].'",var:"V"},cache: false});" style="background:url("images/icons/delete.png" 50% -19px no-repeat;width:16px;height:16px;float:left;margin-left:10px;margin-top: 6px;"></a>';
4

4 回答 4

3

我会将您的样式移动到外部样式表以使其更短,然后在字符串中转义引号,例如 "\"" for "。

$html .="<a href=\"\" onClick=\"$.ajax({type: \"POST\",url: \"delete_pic.php\",data:{id:\".$row["\id\"].",var:\"V\"},cache: false});\" class=\"mystyle\"></a>";

这没有经过测试,因为我没有你的代码:)

于 2013-04-24T16:41:15.890 回答
2

最好的解决方案是使用HEREDOC,它完全消除了在 PHP 级别转义任何引用的需要:

$html .= <<<EOL
<a href="onclick('\$.ajax({ etc.....

EOL;

请注意,您仍然会受到您在 heredoc 中嵌入的任何语言的引用需求的约束。但至少您不必担心由于引号不平衡/未转义而导致 PHP 语法错误。

于 2013-04-24T16:47:37.670 回答
1

我遵循的规则是:php字符串用单引号封装,所以html的属性用双引号。
属性中的任何引号都必须是转义的单引号\'

所以:

$html .='<a href="" onClick="$.ajax({type: \'POST\',url: \'delete_pic.php\',data:{id:\''.$row['id'].'\',var:\'V\'},cache: false});" style="background:url(\'images/icons/delete.png\' 50% -19px no-repeat;width:16px;height:16px;float:left;margin-left:10px;margin-top: 6px;"></a>';
于 2013-04-24T16:44:40.487 回答
1

您可能应该只转义其他双引号内的双引号(如果有意义的话)。:)

$html .='<a href="" onClick="$.ajax({type: \"POST\",url: \"delete_pic.php\",data:{id:\"'.$row['id'].'\",var:\"V\"},cache: false});" style="background:url(\"images/icons/delete.png\" 50% -19px no-repeat;width:16px;height:16px;float:left;margin-left:10px;margin-top: 6px;"></a>';

那(或类似的东西)应该可以工作。

于 2013-04-24T16:44:49.497 回答