为PHP输出转义Javascript代码块和函数


Escaping a Javascript Code Block and Function for PHP output

我一直得到ILLEGAL STRINGILLEGAL TOKEN。任何想法吗?我想这是一个逃避问题,但还没有找到正确的解决方案。我正在转义单引号,因为其他代码在同一区域被转义。

I have try:

  • 转义&等特殊字符

  • "Heredoc",相信这是我的解决方案的一部分,但仍然得到错误。

代码如下:

<?php
  $STRING .='
    <script type="application/javascript">
     function onPictureChanged() 
     {
       var href="http://pinterest.com/pin/create/button/?url="'' +   encodeURIComponent(location.href.replace(location.hash, "")) + ''"&media="'' + $(''#fullResImage'').attr(''src'');

       jQuery(''.pp_social'').append(“<div class=''pinterest'' ><a href=''”+ href +”'' class=''pin-it-button'' count-layout=''horizontal'' target=''_blank''><img border=''0'' src=''http://assets.pinterest.com/images/PinExt.png'' title=''Pin It'' /></a></div>”);
     }
    </script>';
echo $STRING;

在某些情况下使用"代替"。即”+ href +”' = "+ href +"'

p。Mac用户?你可以在Preferences -> Keyboard -> Text

下禁用这个"helper"

好的,答案肯定是由于尝试了许多方法而导致的不准确的转义。解决方案是以下内容的组合:

  • Heredoc大大简化了输出的转义,如果不是完全消除了它的需要。在PHP中使用变量(SQL实践)
  • 正确组合单引号和双引号
  • 确保没有包含花括号/花哨的引号…无论是从复制/粘贴或我的文本编辑器(见阿尔瓦罗的评论上面)
@stefan是的,你的评论绝对是问题的一部分!因为字符串要在URL中,而不是输出到html。

谢谢你的帮助。一双新鲜的眼睛总是有帮助的!下面是最终的工作代码:

$STRING .= 
<<<MY_MARKER
<script type="application/javascript">
function onPictureChanged() 
{
    var href="http://pinterest.com/pin/create/button/?url="+encodeURIComponent(location.href.replace(location.hash,""))+"&media="+$('#fullResImage').attr('src');
    jQuery('.pp_social').append('<div class="pinterest"><a href="+ href +” class="pin-it-button" count-layout="horizontal" target="_blank"><img border="0" src="http://assets.pinterest.com/images/PinExt.png" title="Pin It" /></a></div>');
}
MY_MARKER;