用于分割字符串的模式

时间:2014-01-17 14:45:21

标签: php regex

我想分割这个字符串:

/ server hostname:port username:password

成:

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

我不希望存储/ server。

主机名,端口,用户名和密码的长度各不相同。

我不确定我是否应该使用preg_split,匹配模式应该是什么?

由于

5 个答案:

答案 0 :(得分: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]);

答案 1 :(得分:1)

我不会使用正则表达式,而是试试这个

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

Here是对它的测试

答案 2 :(得分:0)

参见explode功能,它将完成工作

答案 3 :(得分:0)

根据输入格式parse_url()可以选择。

答案 4 :(得分:0)

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