如何转换(在PHP中)
http://images.example.com//images/2014/12/14-12-27-114545 کریم باقری در تمرین تراکتور3 (300x200).jpg
自
http://images.example.com//images/2014/12/14-12-27-114545%DA%A9%D8%B1%DB%8C%D9%85%20%D8%A8%D8%A7%D9%82%D8%B1%DB%8C%20%D8%AF%D8%B1%20%D8%AA%D9%85%D8%B1%DB%8C%D9%86%20%D8%AA%D8%B1%D8%A7%DA%A9%D8%AA%D9%88%D8%B13%20(300x200).jpg
注意:第一个网址中有空格。
我尝试了这段代码,但我失败了:
function url_path_encode($url) {
$path = parse_url($url, PHP_URL_PATH);
if (strpos($path,'%') !== false) return $url; //avoid double encoding
else {
$encoded_path = array_map('urlencode', explode('/', $path));
return str_replace($path, implode('/', $encoded_path), $url);
}
http://images.example.com//images/2014/12/14-12-27-114545%DA%A9%D8%B1%DB%8C%D9%85+%D8%A8%D8%A7%D9%82%D8%B1%DB%8C+%D8%AF%D8%B1+%D8%AA%D9%85%D8%B1%DB%8C%D9%86+%D8%AA%D8%B1%D8%A7%DA%A9%D8%AA%D9%88%D8%B13+%28300x200%29.jpg
在线工具示例:http://meyerweb.com/eric/tools/dencoder/
你试试这个?
(菲律宾比索 4, 菲律宾比索 5)urlencode — URL 编码字符串
<?php
echo '<a href="mycgi?foo=', urlencode($userinput), '">';
?>
你寻找 rawurlencode
function url_path_encode($url)
{
$ret = '';
if(false === $parts = parse_url($url)) {
return false;
}
if (isset($parts['scheme'])) {
$parts['scheme'] = $parts['scheme'] . '://';
}
if (isset($parts['path'])) {
$parts['path'] = join('/', array_map('rawurlencode', explode('/', $parts['path'])));;
}
// ...
return implode('', $parts);
}
echo url_path_encode('http://images.example.com//images/2014/12/14-12-27-114545کریم باقری در تمرین تراکتور3 (300x200).jpg');
最后我通过这个函数解决了它:
function url_path_encode($url) {
$unescaped = array(
'%2D'=>'-','%5F'=>'_','%2E'=>'.','%21'=>'!', '%7E'=>'~',
'%2A'=>'*', '%27'=>"'", '%28'=>'(', '%29'=>')'
);
$reserved = array(
'%3B'=>';','%2C'=>',','%2F'=>'/','%3F'=>'?','%3A'=>':',
'%40'=>'@','%26'=>'&','%3D'=>'=','%2B'=>'+','%24'=>'$'
);
$score = array(
'%23'=>'#'
);
return strtr(rawurlencode($url), array_merge($reserved,$unescaped,$score));
}