2013-11-13 4 views
-1

У меня есть строка прямую а 2h 2m 202.29.216.236 3128 flag ThailandСоюз IP-адрес и порт (регулярное выражение)

$string = preg_replace("/([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})|(\s+\d{2,4}\s+)/", "$1:$2", $string); 

Мне нужно, чтобы получить IP-адрес, как это: 202.29.216.236:3128.

Но мой код делает это: 109.197.92.60:: 8080.

Я не понимаю, где был пробел и два двоеточия.

Заранее благодарим за мой плохой английский.

+0

Потому что у вас есть '\ s' в вашем захвате ... –

ответ

0

Попробуйте

$string = preg_replace("/([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})\s+(\d{2,4})/", "$1:$2", $string); 

Пространства происходит от \ с + находящихся внутри вторыми парами, а второе двоеточие от | голец.

+0

большое спасибо, это работа! – 10minutee

4

Почему вы не используете explode()?

<?php 
$str="2h 2m 202.29.216.236 3128 flag Thailand"; 
$str=explode(' ',$str); 
echo $str[2].":".$str[3];//202.29.216.236:3128 
Смежные вопросы