2016-11-17 89 views
2

我试图将文件名解析为url字符串。如何正确地对字符串进行网址编码

的文件名是:

201-SALÃO DE JOGOS.jpg 

我需要的输出是正是这一点:

201-SAL%c3O%20DE%20JOGOS.jpg 

我想是这样的:

$var = 201-SALÃO DE JOGOS.jpg; 
echo urlencode($var); 

而是将其返回:

201-SAL%C3%83O+DE+JOGOS.jpg 

这不是一个有效的网址。我已经尝试过htmlspecialchars()htmlentities(),但这些都不起作用。

+3

就是这样。为什么不呢? – PeeHaa

+0

我需要像'%20'这样的空格而不是'+'。这是唯一的问题 –

+0

我能理解你为什么要'%20'不是'+'吗? @IvanMoreira – SaidbakR

回答

2

你需要rawurlencode

$filename = "201-SALÃO DE JOGOS.jpg"; 
print rawurlencode($filename); 
+0

'mb_rawurlencode'是无稽之谈; 'rawurlencode'工作在字节级别,根本不关心编码。事实上,两种功能的结果都是相同的。我不知道为什么那个评论者认为mb变体会以任何方式有用。 – deceze

+1

@deceze:好的。感谢您的更新。删除了评论。 –

+0

非常感谢!我的代码现在是'$ var ='201-SALÃODE JOGOS.jpg'; echo rawurlencode(utf8_decode($ var));' –

0

你可以能够使用str_replace更换+%20: “这不是一个有效的URL”

<?php 

$var = "201-SALÃO DE JOGOS.jpg"; 
$output = str_replace('+','%20',urlencode($var)); 
echo $output; 
echo "*****"; 
echo urldecode($output); 
?> 
相关问题