Как закодировать URL как строку javascript в PHP-сгенерированном HTML?

Учитывая этот код PHP:

<a onclick="javascript:window.location.href='<?php echo $url;?>'" 

Что, если есть ' в $ url?

Я попытался использовать json_encode($url) но он не сможет справиться с этим.

Related of "Как закодировать URL как строку javascript в PHP-сгенерированном HTML?"

json_encode будет работать. Вы просто должны использовать его правильно:

 <a onclick="javascript:window.location.href=<?php echo htmlspecialchars(json_encode($url)); ?>"> 

Это будет работать, поскольку json_encode уже возвращает выражение JavaScript с кавычками. И htmlspecialchars необходимо, чтобы избежать возможных метасимволов HTML.