note 125706 added to function.rawurlencode
| From: | Dominik@php.net | Date: | Thu, 21 Jan 2021 07:33:20 +0000 |
| Subject: | note 125706 added to function.rawurlencode | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-216211@lists.php.net to get a copy of this message | ||
Sample function to sanitize a full URL:
<?php
private function sanitizeUrl($url){
$parts = parse_url($url);
// Optional but we only sanitize URLs with scheme and host defined
if($parts === false || empty($parts["scheme"]) ||
empty($parts["host"])){
return $url;
}
$sanitizedPath = null;
if(!empty($parts["path"])){
$pathParts = explode("/", $parts["path"]);
foreach($pathParts as $pathPart){
if(empty($pathPart)) continue;
// The Path part might already be urlencoded
$sanitizedPath .= "/" . rawurlencode(rawurldecode($pathPart));
}
}
// Build the url
$targetUrl = $parts["scheme"] . "://" .
((!empty($parts["user"]) && !empty($parts["pass"])) ?
$parts["user"] . ":" . $parts["pass"] . "@" : "")
.
$parts["host"] .
(!empty($parts["port"]) ? ":" . $parts["port"] :
"") .
(!empty($sanitizedPath) ? $sanitizedPath : "") .
(!empty($parts["query"]) ? "?" . $parts["query"] :
"") .
(!empty($parts["fragment"]) ? "#" . $parts["fragment"] :
"");
return $targetUrl;
}
?>
----
Server IP: 45.112.84.4
Probable Submitter: 195.138.250.34 (proxied: 2001:16b8:60b4:2e00:727a:3dfa:b07a:e659)
----
Manual Page -- http://php.net/manual/en/function.rawurlencode.php
Edit -- https://master.php.net/note/edit/125706
Del: integrated -- https://master.php.net/note/delete/125706/integrated
Del: useless -- https://master.php.net/note/delete/125706/useless
Del: bad code -- https://master.php.net/note/delete/125706/bad+code
Del: spam -- https://master.php.net/note/delete/125706/spam
Del: non-english -- https://master.php.net/note/delete/125706/non-english
Del: in docs -- https://master.php.net/note/delete/125706/in+docs
Del: other reasons-- https://master.php.net/note/delete/125706
Reject -- https://master.php.net/note/reject/125706
Search -- https://master.php.net/manage/user-notes.php