使用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) 

以逃避其他特殊字符