Hallo
Ich dachte nun, dass DU für den Unterschied zwischen urlencode() und rawurlencode() als Dialogpartner herhalten würdest ;-)
Alleine kreige ich diese Zusammenhänge doch auch immer nicht auf die Reihe. Das geht aber augenscheinlich sehr Vielen so...
Das ist wohl wahr, ... also letzteres. Da ich in meinen Skripten, wenn überhaupt, eigentlich nur Zahlen als GET-Parameter übergebe, bin ich mit diesen Funktionen seit Jahren nicht mehr in Berührung gekommen. Aber nach dedlfix' Aussagen habe ich mir die Beschreibungen doch noch mal genauer angeschaut.
In den Beispielen zu urlencode[1] sehe ich dedlfix' Angabe bestätigt, dass damit die Werte von GET-Parametern maskiert werden.
<?php
$query_string = 'foo=' . urlencode($foo) . '&bar=' . urlencode($bar);
echo '<a href="mycgi?' . htmlentities($query_string) . '">';
?>
Nicht die URI, nicht die Parameternamen, nein, nur deren Werte werden mit urlencode
behandelt. Das Beispiel zeigt auch gleich noch (wo wir grade dabei waren), dass htmlentities
nicht einfach der "unnötig aufgeblasene große Bruder" von htmlspecialchars
ist[1], sondern da, wo _jedes_ Sonderzeichen maskiert werden muss, seinen Einsatz findet.
Mit rawurlencode werden, wenn ich es richtig verstanden habe, Teile einer URL maskiert. Das Beispiel 2 im Manualeintrag zu rawurlencode
zeigt die Kodierung eines Ressourcennamens, der Leerzeichen enthält.
Falls diese, meine Beschreibung nicht vollständig ist, möge man mich bitte aufklären, um meinen Horizont zu erweitern. :-)
[1] Im hiesigen Forum geht es ja oft darum, die Ausgabe von Strings, die skriptseitig in eine Seite eingefügt werden, dem Kontext entsprechend zu behandeln, wodurch oft nur darüber gesprochen wird, dass htmlentities
dabei "über's Ziel hinausschießt". Hier haben wir mal ein konkretes Beispiel für einen Einsatz von htmlentities
.
Tschö, Auge