Aus dem Codex-Eintrag für die Datenvalidierung: URLs :
esc_url( $url, (array) $protocols =
null )
(seit 2.8)
Verwenden Sie immer esc_url, wenn Sie URLs bereinigen (in Textknoten, Attributknoten oder anderswo). Lehnt URLs ab, die nicht über eines der bereitgestellten Whitelist-Protokolle verfügen (standardmäßig http, https, ftp, ftps, mailto, news, irc, gopher, nntp, feed und telnet), entfernt ungültige Zeichen und entfernt gefährliche Zeichen. Veraltet seit 3.0: clean_url () Diese Funktion codiert Zeichen als HTML-Entitäten: Verwenden Sie sie beim Generieren eines (X) HTML- oder XML-Dokuments. Codiert kaufmännisches Und (&) und einfache Anführungszeichen (') als numerische Entitätsreferenzen (&,').
esc_url_raw( $url, (array) $protocols
= null )
(seit 2.8)
Zum Einfügen einer URL in die Datenbank. Diese Funktion codiert keine Zeichen als HTML-Entitäten: Verwenden Sie sie beim Speichern einer URL oder in anderen Fällen, in denen Sie die nicht codierte URL benötigen. Diese Funktionalität kann in der alten Funktion clean_url repliziert werden, indem $ context auf db gesetzt wird.
Die Hauptunterschiede scheinen also zu sein:
esc_url()
codiert HTML-Entitäten, esc_url_raw()
nicht jedoch
esc_url()
ist für die
Ausgabe vorgesehen , während esc_url_raw()
es für die Datenbankspeicherung vorgesehen ist
BEARBEITEN:
Da Sie entweder die tatsächliche URL aus der Abfragezeichenfolge fest codieren (oder separat speichern / speichern) und dann die Abfragezeichenfolge über anhängen [add_query_arg()][2]
, ist es möglicherweise besser, die angehängte Abfragezeichenfolge über zu esc_js()
maskieren, als esc_url()
?
Zum Beispiel:
add_query_arg( esc_js( 'apples' ), esc_js( '420' ), $myurl )
esc_url()
funktioniert nicht richtig, wenn Sie Abfrageargumente in einer URL haben, die Sie ausgebenesc_js()
, um nur den Daten zu entkommen, die über hinzugefügt wurdenadd_query_arg()
? Siehe oben in Antwort bearbeiten.apples
. Das Problem ist in add_query_arg, wenn 'Äpfel' mit anderen Argumenten mit&
<script type="text/javascript" src="<?= $_SERVER['REQUEST_URI'] ?>'/?javascriptcode=1"></script>