À partir de l' entrée Codex pour la validation des données: URL :
esc_url( $url, (array) $protocols =
null )
(depuis 2.8)
Utilisez toujours esc_url lors de la désinfection des URL (dans les nœuds de texte, les nœuds d'attribut ou ailleurs). Rejette les URL qui n'ont pas l'un des protocoles fournis sur la liste blanche (par défaut http, https, ftp, ftps, mailto, news, irc, gopher, nntp, feed et telnet), élimine les caractères invalides et supprime les caractères dangereux. Déconseillé depuis 3.0: clean_url () Cette fonction code les caractères sous forme d'entités HTML: utilisez-la lors de la génération d'un document (X) HTML ou XML. Encode les esperluettes (&) et les guillemets simples (') comme références d'entité numérique (&,').
esc_url_raw( $url, (array) $protocols
= null )
(depuis 2.8)
Pour insérer une URL dans la base de données. Cette fonction ne code pas les caractères en tant qu'entités HTML: utilisez-la lors du stockage d'une URL ou dans d'autres cas où vous avez besoin de l'URL non codée. Cette fonctionnalité peut être répliquée dans l'ancienne fonction clean_url en définissant $ context sur db.
Ainsi, les principales différences semblent être:
esc_url()
code les entités HTML, mais esc_url_raw()
ne
esc_url()
est destiné à la
sortie , tandis qu'il esc_url_raw()
est destiné au stockage de la base de données
ÉDITER:
Étant donné que vous codez en dur (ou enregistrez / stockez séparément) l'URL réelle de la chaîne de requête, puis que vous ajoutez la chaîne de requête via [add_query_arg()][2]
, est-il préférable d'échapper à votre chaîne de requête ajoutée via esc_js()
, plutôt que esc_url()
?
Par exemple:
add_query_arg( esc_js( 'apples' ), esc_js( '420' ), $myurl )
esc_url()
ne fonctionne pas correctement lorsque vous avez des arguments de requête dans une URL que vous souhaitez afficheresc_js()
pour échapper uniquement aux données ajoutées viaadd_query_arg()
? Voir modifier en réponse, ci-dessus.apples
. Le problème est dans add_query_arg lorsque joint des 'pommes' avec d'autres arguments avec&
<script type="text/javascript" src="<?= $_SERVER['REQUEST_URI'] ?>'/?javascriptcode=1"></script>