2012-05-15 120 views
2

我正在做一個涉及一個留言箱的學校作業。一個偉大的教程,使用jQuery,Ajax,MySQL和PHP。現在我遇到了一個小問題,下面這句話:撇號php問題

$result .= "<li><strong>".$row['user']."</strong><img src="\" alt="\"-\"" />".$row['message']." <span class="\"date\"">".$row['date']."</span></li>";} 

我想知道是否有人可以找出它爲什麼會給出錯誤。到目前爲止,我得出了這個結論$row['message']然後它認爲其餘的代碼作爲一個字符串。所以這可能是一個撇號問題。

+0

看StackOverflow的方式編輯器中已突出顯示您的代碼。看看你希望實際顯示爲'$ result'的''''內容顏色的位置已經改變了,這應該有助於你弄清楚爲什麼你的代碼會拋出錯誤 – PenguinCoder

回答

5

只是爲了讓您的生活更輕鬆的緣故:使用'爲PHP和"爲HTML這樣的:

$result .= '<li><strong>'.$row['user'].'</strong><img src="" alt=""/>'.$row['message'].' <span class="date">'.$row['date'].'</span></li>'; 

敢肯定你應該明白我的意思。

+1

這是一個恕我直言,最清晰的解決方案。如果行尚未過濾(我猜的名字),那麼你可能會喜歡用'htmlspecialchars )'爲了防止XSS攻擊 – YMMD

+0

是的絕對同意,但我很確定問題本身的背景並不在防範攻擊的層面,也沒有被問到這個問題。 asker :) –

+0

我打算查看htmlspecialchars()。謝謝你的提示。這似乎是解決方法,至少我會在3分鐘內接受:) –

1
$result .= "<li><strong>{$row['user']}</strong><img src='http://www.' alt='My Alt Tag' />{$row['message']}<span class='date'>{$row['date']}</span></li>"; 

你通過進出報價混亂的自己 - 你可以用變量與{}迫使插在這種情況下。

+0

這似乎解決了這個問題。其他問題,但我會自己嘗試。謝謝你。 –

0
$result .= "<li><strong>".$row['user']."</strong><img src='' alt='-'/>".$row['message']." <span class='date'>".$row['date']."</span></li>";} 

避免使用「字符串的內部 - 它很容易瞭解轉義特殊字符忘記相反的。」使用」。 再說 - 你用「只有當有任何PHP這個字符串中解析必要如

$var1 = 1; 
$test = "$var1"; //evaluates to '1' 
$test = '$var1'; //evaluates to '$var1' 
0

看來,你試圖逃跑的報價,使你的工作更難在PHP中一個很大的特點爲HTML輸出。使用引號中的字符串,使您不必擔心轉義雙引號請參考PHP Manual for Strings

換句話說,你的行變成了:。

$result .= '<li><strong>' . $row['user'] . '</strong><img src="" alt="-" />' . $row['message'] . 
      '<span class="date">' . $row['date'] . '</span></li>' . 
      '<li><strong>' . $row['user'] . '</strong><img src="" alt="-" />' . $row['message'] . 
      '<span class="date">' . $row['date'] . '</span></li>';