2013-04-24 68 views
3

如何將此代碼與所有單引號和雙引號組合起來,因爲它應該是這樣。 我嘗試了幾種組合,但無法使其工作。 這是我最後一次嘗試,請大家幫忙。php變量中的單引號和雙引號

使用長字符串時,一個好方法是什麼?

$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>'; 
+0

我認爲問題出現在'style'屬性部分。背景網址的開頭引號關閉了'style'屬性的開頭引用。也許你應該按照下面的@ Jeffrey的回答,並分開你的樣式表,而不是使它內聯:) – 2013-04-24 16:44:27

+1

2筆記在這裏:你錯過了關閉)的網址(和奇怪的,因爲它似乎,你不需要任何引號周圍url – Uberfuzzy 2013-04-24 16:46:08

回答

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>'; 
3

我想將你的樣式外部樣式表使它更短,然後就逃離像字符串「\」「爲」報價。

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

這是沒有測試,因爲我沒有你的代碼:)

+0

是的,我明白,但這只是一個創建的元素,所以我沒有把它放在外部樣式表中。 – 2013-04-24 16:42:34

+0

我之前也做過這件事:)但它總是會回來咬你:) – 2013-04-24 16:43:20

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>'; 

(或類似的)應該工作。

2

最好的解決辦法是使用HEREDOC,其中完全消除了在PHP層逸出需要任何報價:

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

EOL; 

請注意,您仍然以任何語言的引用需求約束(S)你嵌入在heredoc中。但至少您不必擔心由於不平衡/未轉義的引號導致PHP語法錯誤。