note 104726 added to function.parse-url
| From: | DavidBeck at osu1 dot php dot net | Date: | Mon, 04 Jul 2011 05:54:04 +0000 |
| Subject: | note 104726 added to function.parse-url | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-181213@lists.php.net to get a copy of this message | ||
Lengthy function to correct (mainly user-submitted) URLs.
<?php
function correctURL($address)
{
if (!empty($address) AND $address{0} != '#' AND
strpos(strtolower($address), 'mailto:') === FALSE AND
strpos(strtolower($address), 'javascript:') === FALSE)
{
$address = explode('/', $address);
$keys = array_keys($address, '..');
foreach($keys AS $keypos => $key)
array_splice($address, $key - ($keypos * 2 + 1), 2);
$address = implode('/', $address);
$address = str_replace('./', '', $address);
$scheme = parse_url($address);
if (empty($scheme['scheme']))
$address = 'http://' . $address;
$parts = parse_url($address);
$address = strtolower($parts['scheme']) . '://';
if (!empty($parts['user']))
{
$address .= $parts['user'];
if (!empty($parts['pass']))
$address .= ':' . $parts['pass'];
$address .= '@';
}
if (!empty($parts['host']))
{
$host = str_replace(',', '.', strtolower($parts['host']));
if (strpos(ltrim($host, 'www.'), '.') === FALSE)
$host .= '.com';
$address .= $host;
}
if (!empty($parts['port']))
$address .= ':' . $parts['port'];
$address .= '/';
if (!empty($parts['path']))
{
$path = trim($parts['path'], ' /\\');
if (!empty($path) AND strpos($path, '.') === FALSE)
$path .= '/';
$address .= $path;
}
if (!empty($parts['query']))
$address .= '?' . $parts['query'];
return $address;
}
else
return FALSE;
}
?>
----
Server IP: 69.147.83.197
Probable Submitter: 173.171.151.187
----
Manual Page -- http://www.php.net/manual/en/function.parse-url.php
Edit -- https://master.php.net/note/edit/104726
Del: integrated -- https://master.php.net/note/delete/104726/integrated
Del: useless -- https://master.php.net/note/delete/104726/useless
Del: bad code -- https://master.php.net/note/delete/104726/bad+code
Del: spam -- https://master.php.net/note/delete/104726/spam
Del: non-english -- https://master.php.net/note/delete/104726/non-english
Del: in docs -- https://master.php.net/note/delete/104726/in+docs
Del: other reasons-- https://master.php.net/note/delete/104726
Reject -- https://master.php.net/note/reject/104726
Search -- https://master.php.net/manage/user-notes.php