2013-07-19 37 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

它仍然不起作用 –