php中的转换url
我在下面的表格中有一个urlphp中的转换url,php,url,character-encoding,encode,Php,Url,Character Encoding,Encode,我在下面的表格中有一个url http://www.site.com/index.php?q=foo boo 当我通过chrome访问url时,chrome会将其正确转换为 http://www.site.com/index.php?q=foo%20boo 现在,当我在第一个url中使用file\u get\u内容时,它无法正确读取url 当我使用下面的url时,它是确定的 http://www.site.com/index.php?q=foo boo 为了将第一个链接转
http://www.site.com/index.php?q=foo boo
当我通过chrome访问url时,chrome会将其正确转换为
http://www.site.com/index.php?q=foo%20boo
现在,当我在第一个url中使用file\u get\u内容时,它无法正确读取url
当我使用下面的url时,它是确定的
http://www.site.com/index.php?q=foo boo
为了将第一个链接转换为最后一个链接,为了将第一个链接上的所有特殊字符(如空格)正确转换为最后一个链接上的
,我应该使用哪些php函数?您可以使用php的rawurlencode()
:
比使用
HTML实体替换可断空格更安全的选择是将其替换为\xA0
ASCII字符。事实上,他们是。URL
中的&
字符被视为参数分隔符,因此
只能导致问题。以下算法可以实现您可能正在寻找的功能:
$url='1!'http://www.site.com/index.php?q=foo boo&r=fii bii';
echo str_replace(“\x20”、“\xA0”、$url);
//结果:http://www.site.com/index.php?q=foo boo&r=fii bii(空间不可破坏)
echo str_replace(“\x20”,”,$url);
//结果:http://www.site.com/index.php?q=foo boo&r=fii bii
更复杂的算法:
echo preg\u replace\u回调('/[\?&]\w+=([^&]+)/”,创建函数(
“$matches”,
'返回str_replace(“\x20”、“\xA0”、$matches[0]);'
)美元网址);
//结果:http://www.site.com/index.php?q=foo boo&r=fii bii(空间不可破坏)
提取这些参数时:
$arr=parse_url($url);
parse_str($arr['query'],$arr);
var_出口(arr);
//\xA0的结果:数组('q'=>'foo-boo','r'=>'fii-bii',)
//数组的结果('q'=>'foo','nbsp;boo'=>'','r'=>'fii','nbsp;bii'=>'')//三重'&`冲突
如果我能最好地回答您的问题,请单击左侧的复选框使用
进行此转换是错误的。如果确实要用不可断开的空格字符替换该空格,请改用0xA0
。