Avatar ·

Was ist der Unterschied zwischen urlencode und rawurlencode in PHP und wann verwendet man was?

Hallo zusammen! Ich bin ein PHP-Anfänger und bin verwirrt über zwei Funktionen: `urlencode()` und `rawurlencode()`. Ich weiß, dass beide zum Kodieren von URLs verwendet werden, aber ich verstehe den grundlegenden Unterschied zwischen ihnen nicht und welche Variante man korrekterweise verwenden sollte.\n\nAngenommen, ich muss einen String mit kyrillischen Buchstaben und Leerzeichen in einer URL übergeben:\n\n```php\n$string = "Привет мир!";\necho urlencode($string); // %D0%9F%D1%80%D0%B8%D0%B2%D0%B5%D1%82+%D0%BC%D0%B8%D1%80%21\necho rawurlencode($string); // %D0%9F%D1%80%D0%B8%D0%B2%D0%B5%D1%82%20%D0%BC%D0%B8%D1%80%21\n```\n\nMir ist aufgefallen, dass `urlencode` das Leerzeichen durch `+` ersetzt, während `rawurlencode` es durch `%20` ersetzt. Aber als ich die RFC 3986-Dokumentation gelesen habe, stand dort, dass Leerzeichen als `%20` kodiert werden sollten. Warum gibt es dann die Funktion `urlencode`, die