2014-01-17 2 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); 
} 
Смежные вопросы