Передача строки с апострофом из PHP в функцию JavaScript

Простая проблема, что я просто не могу найти «правильный» ответ.

У меня есть PHP-скрипт, который читает имена людей из базы данных и отображает их в таблице. В каждой строке я связал имя человека с функцией JavaScript, которая отображает всплывающее окно с именем человека в качестве заголовка – код PHP и итоговый html:

$name = $results['name']; echo '<a href="javascript:void(0)" onclick="popup(this, '\' . $name . '\')">' . $name . '</a>'; 

С html:

 <a href="javascript:void(0)" onclick="popup(this, 'Steve Smith')">Steve Smith</a> 

Все работает отлично, за исключением случаев, когда я нажимаю имя с дефисом, например «Брайс Д'Арнуд», что приводит к апострофе, нарушающему html. Чтобы обойти эту проблему, я использую функцию PHP addslashes() , в результате чего появляется следующий код & html:

 $name = $results['name']; echo '<a href="javascript:void(0)" onclick="popup(this, '\' . addslashes($name) . '\')">' . $name . '</a>'; 

С html:

 <a href="javascript:void(0)" onclick="popup(this, 'Bryce D\'Arnoud')">Bryce D'Arnoud</a> 

Все работает нормально, но по какой-то причине JavaScript не удаляет escape-символ, а в функции popup (), если я предупреждаю имя, я вижу «Bryce D \ 'Arnoud»,

 function popup(t, name) { alert(name); } 

Любые предложения относительно того, где я ошибаюсь?

Во-первых, жизнь была бы намного проще, если бы вы не смешивали JavaScript в своей разметке. Вместо этого используйте PHP-форму семантической разметки и получите доступ к данным с помощью JavaScript:

 $name = $results['name']; echo '<a href="#" class="popup" data-name="' . $name . '">' . $name . '</a>'; 

И затем получить доступ к значению (я использую jQuery для этого для терпения):

 $('.popup').click(function(e) { e.preventDefault(); alert($(this).attr('data-name')); }); 

И в родной JS (я думаю):

 document.getElementsByClassName('popup').onclick = function (e) { e = e || window.event; e.preventDefault(); alert(this.getAttribute('data-name')); }; 

Не ускользнуть от работы с двойными кавычками? (не испытано)

 echo "<a href=\"javascript:void(0)\" onclick=\"popup(this,'$name')\">$name</a>"; 

EDIT: Извините за отсутствие точки. Однако использование preg_replace для замены одиночных кавычек своими объектами HTML может сделать это.

 echo '<a href="javascript:void(0)" onclick="popup(this,\'' . preg_replace("/'/",'&#39;',$name) . "')\">$name</a>"; 

EDIT 2 Фактически преобразование всех из $name может быть более чистым:

 $name = preg_replace("/'/", '&#39;', $results['name']); echo "<a href=\"javascript:void(0)\" onclick=\"popup(this,'$name')\">$name</a>";