Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php中的转换url_Php_Url_Character Encoding_Encode - Fatal编程技术网

php中的转换url

php中的转换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 为了将第一个链接转

我在下面的表格中有一个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

为了将第一个链接转换为最后一个链接,为了将第一个链接上的所有特殊字符(如空格)正确转换为最后一个链接上的
,我应该使用哪些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