2013-07-19 34 views
0

我使用php on_start和ob_get_contents来回显html并将其存储在变量中。但是,当我json编码和检查输出它不会输出整个字符串。谁能帮忙指出我在做什么错PHP OB_START哪个双引号

ob_start(); 
    echo'<a href=\"javascript:pixlr.edit({image:\"http://mywebite.com/uploads/$photo\", title:\" $photoFileNameProper\", service:\"express\", exit:\"http://mywebsite.com/home\", method:\"get\", locktarget: \"true\", target:\"http://mywebsite.com/plixr.php\", locktitle :\"true\"});\" id=\"uploadedPhoto\" title=\"click to enhance photo\"><img src=\"images/editphotohover.png\"/></a>\"'; 

    $photo = ob_get_contents(); 
    ob_end_clean(); 

我得到的只是得到结束锚标记 在JSON编码输出

+0

你为什么用'ob_start'做它时,你可以只把它分配给一个变量?用'$ photo ='替换'echo',你很好。 –

+0

@GigaWatt假设代码是一个大文件的摘录 - 其中ob_start()有意义... – SteAp

回答

1

有没有必要在这里逃脱双引号

echo'<a href=\"javascri... 

只是写:

echo'<a href="javascri... 

双引号保留在single quotes

此外,注意escaping within single quotes没有影响:

  • "\t"呈现为一个制表字符
  • '\t'呈现为\t

PHP documentation状态这样的:

  • 若要指定文字单引号,请使用反斜杠(\)进行转义。
  • 要在单引号之前或字符串末尾指定文字反斜杠,请将其加倍(\\)。
  • 请注意,试图转义任何其他字符也会打印反斜杠。

因此,这个怎么样代码:

echo'<a href="javascript:pixlr.edit(
       { image: \'http://mywebite.com/uploads/$photo\', 
        title: \'' . $photoFileNameProper . '\', 
        service: \'express\', 
        exit:\'http://mywebsite.com/home\', 
        method: \'get\', 
        locktarget: \'true\', 
        target: \'http://mywebsite.com/plixr.php\', 
        locktitle: \'true\' 
       });" 
     id = "uploadedPhoto" 
     title = "click to enhance photo"> 
     <img src="images/editphotohover.png"/> 
     </a>' 
     ; 
+0

那么,你仍然需要在单引号字符串中逃避两件事:'''和'\\' –

+0

@SamDufel啊,太糟糕了,我失去了这些观点。谢谢! – SteAp

+0

它仍然不起作用 –