2014-10-08 55 views
3

我遇到了我的PHP代碼問題。我一直在改變6個小時,無論我做什麼,我仍然得到Parse錯誤。這是代碼:如何在不轉義爲HTML的情況下正確書寫<img src>而不轉義爲HTML

$slider3 = '<img src="'templates/' . $this->template . '/images/slider/slider3.jpg'">' . '" alt="' . $sitename . '" />'; 

我可以計算到的唯一辦法不讓它拋出一個錯誤是通過寫這樣說:

$slider3 = '<img src="templates/" . $this->template . "/images/slider/slider3.jpg" . "/>"'; 

,但我不認爲這是正確的。

我想$ slider3 =「templates/MYTEMPLATE/images/slider/slider3.jpg」然後我會echo $ slider3;

我對所有的單引號和雙引號都感到困惑。我認爲第一個是正確的 - 我看它並研究它,它看起來是對的。但它會拋出解析錯誤。

+0

作爲一般的經驗法則''被認爲是一個字符數組,其中as「」被認爲是一個字符串,儘管字符串是一個字符數組,但這在php(其他編程語言它是)。因此,在PHP中,一個字符串可以包含',並且一個字符數組可以包含「如果您想使用」,您可以通過編寫類似$ var =「\」「; // output =>」的方式來避免它。 – 2014-10-08 05:49:24

+0

如果您的問題得到解答,請接受答案 – 2014-10-08 10:13:59

回答

7
$slider3 = '<img src="templates/'.$this->template.'/images/slider/slider3.jpg"/>'; 

應該工作。

說明:

'<img src="templates/' 

是一個單引號字符串,這恰好包含一個雙引號(這是需要的HTML src屬性,或其他任何HTML屬性值真的)

. 

(點)是字符串連接運算符。它連接(「膠水」)的第一個字符串連同...

$this->template 

這大概是包含模板(而不是從你的代碼示例明確)的名稱的字符串。請注意,如果$ this-> template來自用戶輸入,或者是未經驗證的源,則可用於跨站點腳本編寫,例如。如果它包含 「> < SCRIPT>警報(」 XSS!「)< SCRIPT>,JavaScript在瀏覽器中執行!

. 

另一個拼接帶...

「/圖片/滑塊/ slider3 .jpg「/>'

這是另一個單引號字符串,它恰好包含雙引號,結束src屬性值。

+1

非常感謝。這幫助了我很多。真。我在Joomla中使用它,所以$ this-> template只是從Joomla獲取模板的文件夾名稱。 – Michele 2014-10-08 06:06:15

+2

+1的詳細解釋。好一個。 – Lodder 2014-10-08 07:05:32

3

試試這個:

$slider3 = '<img src="templates/"' . $this->template . '"/images/slider/slider3.jpg"/>'; 
1
$template = "MYTEMPLATE"; 
$slider3 = '<img src="templates/'.$template.'/images/slider/slider3.jpg"/>'; 
echo $slider3; 

會響應 - >

<img src="templates/MYTEMPLATE/images/slider/slider3.jpg"/> 
1

只要寫:

<?php 
$templates = "var"; 
echo "<img src='templates/${templates}/images/slider/slider3.jpg'/>"; 

會造成

<img src='templates/var/images/slider/slider3.jpg'/> 
相關問題