Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript/PHP忽略字符串中的引号_Javascript_Php_Audio - Fatal编程技术网

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

Javascript/PHP忽略字符串中的引号,javascript,php,audio,Javascript,Php,Audio,我正在用php和javascript制作一个音乐播放器。我列出的文件如下: <?php if (isset($_GET["action"])) { $action = htmlspecialchars($_GET["action"]); if ($action == "listen") { function listFolderFiles($dir) { $ffs = scandir($dir); echo

我正在用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>
echo '<li><a href="#" onclick="changesong(\'' .addslashes($dir . '/' . $ff). '\');">'. $ff . '</a>';

我把这首歌改成这样:

<?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>
echo '<li><a href="#" onclick="changesong(\'' .addslashes($dir . '/' . $ff). '\');">'. $ff . '</a>';

函数changesong(url){
$(“#audioplayer”).attr(“src”,url);
$(“#音频播放器”).trigger('play');
}
问题是带有引号的歌曲无法播放(例如,现在不要阻止我)。有没有一种简单的方法可以解决这个问题?

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

<?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>
echo '<li><a href="#" onclick="changesong(\'' .addslashes($dir . '/' . $ff). '\');">'. $ff . '</a>';
echo'
  • ';
  • 您可以在HTML代码中转义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>
    
    echo '<li><a href="#" onclick="changesong(\'' .addslashes($dir . '/' . $ff). '\');">'. $ff . '</a>';
    
    请注意,您可能还需要转义双引号,因为它们可能会干扰HTML标记

    $link = $dir . '/' . $ff;
    $link = str_replace("'", "&apos;", $link);
    $link = str_replace('"', "&quot;", $link);
    echo '<li><a href="#" onclick="changesong(\'' . $link . '\');">'. $ff . '</a>';
    
    $link=$dir.'/'$ff;
    $link=str_replace(“'”,“&apos;”,$link);
    $link=str_replace(“,”,“,$link);
    回音“
  • ”;
  • 您看过呈现的HTML吗?