2009-10-29 161 views
0

在我下面的代碼,當$artist$title變量包含「它使JavaScript指令來打破。雙qoutes導致JavaScript錯誤

有另一種方式,我可以比addslashes的編碼這些其他()來解決這個問題?

$artist = addslashes($row['artist']); 
    $title = addslashes($row['title']); 

    echo '<div class="play" style="display: inline"><a href="javascript:playSong'."('$artist','$title','$row[file]','$row[id]')".'"> 

回答

1

可以考慮變量URL編碼,像

$artist = rawurlencode($row['artist']); 
$title = rawurlencode($row['title']); 

echo "..... playSong(unescape('$artist'), unescape('$title')... "; 

或移動解碼爲playSong函數。

//編輯:這是你如何讓你的報價權

echo "<div class='play' style='display: inline'><a href=\"javascript:playSong(unescape('$artist'),unescape('$title'),'$row[file]','$row[id]')\">...."; 
+0

的問題是,如果有「回聲‘’;它打破了JavaScript命令不會顯示錯誤,所以我需要正確地封裝變量,我猜想。 – ian 2009-10-29 10:36:49

-2

試試這個

echo '<div class="play" style="display: inline"> <a href="javascript:playSong('$artist','$title','$row[file]','$row[id]')" >'

+0

我對代碼進行了格式化,因爲標籤被剝離出來了。'echo'''讓我大聲笑 – knittl 2009-10-29 11:01:42