Javascript / PHP忽略字符串中的引号

时间:2015-01-31 00:25:26

标签: javascript php audio

我正在使用php和javascript制作音乐播放器。我列出了这样的文件:

<?php

if (isset($_GET["action"])) {
    $action = htmlspecialchars($_GET["action"]);

    if ($action == "listen") {
        function listFolderFiles($dir) {
            $ffs = scandir($dir);
            echo '<ol>';
            foreach($ffs as $ff){
                if($ff != '.' && $ff != '..'){
                    echo '<li><a href="#" onclick="changesong(\'' . $dir . '/' . $ff . '\');">'. $ff . '</a>';
                    if (is_dir($dir . '/' . $ff)) listFolderFiles($dir . '/' . $ff);
                    echo '</li>';
                }
            }
            echo '</ol>';
        }

        listFolderFiles("music");
    }
} else {
    echo '<a href="?action=listen">> listen</a>';
}
?>

我改变了这首歌:

<script>
function changesong(url) {
    $("#audioplayer").attr("src", url);
    $("#audioplayer").trigger('play');
 }
</script>

问题是带有引号的歌曲将无法播放(例如“Do Do Stop Me Now”)。有没有一种简单的方法来解决这个问题?

2 个答案:

答案 0 :(得分:1)

您应该使用addslashes(),如下所示:

echo '<li><a href="#" onclick="changesong(\'' .addslashes($dir . '/' . $ff). '\');">'. $ff . '</a>';

答案 1 :(得分:0)

您可以在HTML代码中转义javascript函数的引号,如下所示:

请注意,您可能还需要转义双引号,因为它们可能会干扰HTML标记。

$link = $dir . '/' . $ff;
$link = str_replace("'", "&apos;", $link);
$link = str_replace('"', "&quot;", $link);
echo '<li><a href="#" onclick="changesong(\'' . $link . '\');">'. $ff . '</a>';