json_encode
будет работать. Вы просто должны использовать это правильно:
<a onclick="javascript:window.location.href=<?php echo htmlspecialchars(json_encode($url)); ?>">
Это будет работать, так как json_encode
уже возвращает выражение JavaScript с кавычками. И htmlspecialchars
необходим для экранирования возможных метасимволов HTML.