2014-01-17 108 views
-2

我期待拆分此字符串:模式的分裂字符串

/服务器的主机名:端口用户名:密码

到:

Array ([0] => hostname 
     [1] => port 
     [2] => username:password) 

我不希望为/服务器被存储。

主机名,端口,用户名和密码将在所有的长度变化。

我不知道我是否应该使用使preg_split为此,匹配模式应该是什么?

感谢

+7

你尝试了什么呢?告诉我们你有什么,我们会帮助你! – grebneke

回答

2

爆炸字符串,并分割它的部分可以得到你所需要的。请注意,下面的示例没有检查字符串实际上是否以该格式进行检查。这是明智的检查。

$str = '/server hostname:port username:password'; 
$bits = explode(" ",$str,3); 
list($hostname,$port) = explode(':',$bits[1]); 
list($username,$password) = explode(':',$bits[2]); 

编辑创建你所需要的:

$str = '/server hostname:port username:password'; 
$bits = explode(" ",$str,3); 
list($hostname,$port) = explode(':',$bits[1]); 
$arr = array($hostname,$port,$bits[2]); 
+0

如果密码包含空格,该怎么办? –

+0

@SabujHassan然后这将打破。将编辑。 – Jim

+0

太棒了,非常感谢 – Ben

0

explode功能,它会做的工作

1

我不会用正则表达式这一点,相反,试试这个

$str="/server hostname:port username:password"; 
$arr=explode(" ",$str); 
$newarr=array(explode(":",$arr[1])[0],explode(":",$arr[1])[1],$arr[2]); 

Here是它

0
测试

根据输入格式parse_url()可能是一个选项。

0
$str = '/server hostname:port username:pa sword'; 
if(preg_match("|/server (.+):(.+) ([^:]+:.+)|", $str, $m)){ 
    print_r($m); 
}