使用PHP用%20replaceURLS中的空间
我正在寻找用%20replaceURL中的所有空间实例。 我将如何与正则expression式?
谢谢!
在这里不需要一个正则expression式,如果你只是想用另一个stringreplace一个string:使用str_replace()
应该是绰绰有余的:
$new = str_replace(' ', '%20', $your_string);
但是,如果你需要更多的东西,而且你可能会这样做,如果你正在使用URL,你应该看看urlencode()
函数。
使用urlencode()
而不是试图实现你自己的。 偷懒。
我想你必须使用rawurlencode()代替urlencode()来达到你的目的。
样品
$image = 'some images.jpg'; $url = 'http://example.com/'
与urlencode($ str)将会导致
echo $url.urlencode($image); //http://example.com/some+images.jpg
它根本不会变成%20
但用rawurlencode($ image)会产生
echo $url.rawurlencode(basename($image)); //http://example.com/some%20images.jpg
你有几个select如何做到这一点,或者:
-
urlencode()
或rawurlencode()
– 用于编码http协议的URL的函数 -
str_replace()
– “重型机械”stringreplace - 当replace多个字符时,
strtr()
会比str_replace()
有更好的性能 -
preg_replace()
使用正则expression式(perl兼容)
strtr()
假设你想用"%20"
replace"\t"
和" "
"%20"
:
$replace_pairs = array( "\t" => '%20', " " => '%20', ); return strtr( $text, $replace_pairs)
preg_replace()
这里有几个选项,要么replace空间~ ~
,再次replace空间和tab〜 ~[ \t]~
或者各种空格 ~\s~
:
return preg_replace( '~\s~', '%20', $text);
或者当你需要用这个"\t \t \t \t"
来代替这个string时,只有一个%20
:
return preg_replace( '~\s+~', '%20', $text);
我假设你真的想使用手动stringreplace,并处理更多types的空格,如不可拆分的空格(
)
$result = preg_replace('/ /', '%20', 'your string here');
你也可以考虑使用
$result = urlencode($yourstring)
以逃避其他特殊字符