Javascript / PHP игнорировать кавычки в строке

Я делаю музыкальный проигрыватель, используя 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>

Проблема в том, что песни с кавычками в них не будут воспроизводиться (например, «Не останавливай меня сейчас»). Есть ли простой способ это исправить?

-1

Решение

Вы должны использовать addlashes (), вот так:

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

Другие решения

Вы можете экранировать кавычки для функции javascript в коде HTML следующим образом:

Обратите внимание, что вам, вероятно, также нужно избегать двойных кавычек, поскольку они могут мешать тегу HTML.

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