Строковая функция, получение ip из строки

12
EA
На сайте с 15.02.2007
Offline
29
1293

Всех приветствую, вопрос такой:

Допустим есть строка(любая из них может быть):

123.123.123.123

123.123.123.123:8000

123.123.123.123: 8000

123.123.123.123 :8000

123.123.123.123 : 8000

Нужно получить из строки IP адрес.

Пробовал

preg_match("/(^\S+):\S+/",

123.123.123.123:8000", $matches);

Работает только с 123.123.123.123:8000, помогите пожалуйста привести функцию к рабочему виду, заранее спасибо.

"Конкурс" (/ru/forum/201132) и "Фото конкурс" (/ru/forum/212504) для DLE.
DJ_Petrovich
На сайте с 13.02.2006
Offline
188
#1

удалите все пробелы из строки $str = str_replace(" ", "", $str) и не парьтесь.

тут без регулярок вполне можно обойтись.

Тонны одноцентового трафика из Директа для ваших сайтов. Настройка - бесплатно! (/ru/forum/779616) Лендинг + Реклама в Яндекс.Директ за 15 минут! (/ru/forum/comment/16213883)
EA
На сайте с 15.02.2007
Offline
29
#2
удалите все пробелы из строки $str = str_replace(" ", "", $str) и не парьтесь.
тут без регулярок вполне можно обойтись.

Спасибо, об элементарном и не подумал :)

Только вот мой вариант для

123.123.123.123

не работает

malls
На сайте с 08.08.2005
Offline
255
#3

preg_match("/[\t ]*([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})[\t ]*:/", $string, $matches)

J
На сайте с 02.02.2009
Offline
53
#4
el_aspect:
Всех приветствую, вопрос такой:
Допустим есть строка(любая из них может быть):
123.123.123.123
123.123.123.123:8000
123.123.123.123: 8000
123.123.123.123 :8000
123.123.123.123 : 8000

Нужно получить из строки IP адрес.

Пробовал
preg_match("/(^\S+):\S+/",

123.123.123.123:8000", $matches);

Работает только с 123.123.123.123:8000, помогите пожалуйста привести функцию к рабочему виду, заранее спасибо.

"/(^\S+)(:\S+)?/"

или

http://seoparser.ru/t/r.php

ewg777
На сайте с 04.06.2007
Offline
225
#5

Разве?

Array
(
[0] => Array
(
[0] => 123.123.123.123
[1] => 123.123.123.123:8000
[2] => 123.123.123.123: 8000
[3] => 123.123.123.123 :8000
[4] => 123.123.123.123 : 8000
)

[1] => Array
(
[0] => 123.123.123.123
[1] => 123.123.123.123:8000
[2] => 123.123.123.123: 8000
[3] => 123.123.123.123 :8000
[4] => 123.123.123.123 : 8000
)

[2] => Array
(
[0] => 123.
[1] => 123.
[2] => 123.
[3] => 123.
[4] => 123.
)

[3] => Array
(
[0] =>
[1] => :8000
[2] => : 8000
[3] => :8000
[4] => : 8000
)

DJ_Petrovich
На сайте с 13.02.2006
Offline
188
#6
el_aspect:
Спасибо, об элементарном и не подумал :)
Только вот мой вариант для
123.123.123.123
не работает

там перед 123.123.123.123 нет открывающей кавычки

J
На сайте с 02.02.2009
Offline
53
#7
ewg777:
Разве?
Array

(
[0] => Array
(
[0] => 123.123.123.123
[1] => 123.123.123.123:8000
[2] => 123.123.123.123: 8000
[3] => 123.123.123.123 :8000
[4] => 123.123.123.123 : 8000
)
...

Ну а чем не ip-то? Про пробелы уже говорилось - я их учёл на всякий случай :)

EA
На сайте с 15.02.2007
Offline
29
#8
там перед 123.123.123.123 нет открывающей кавычки

это в посте случайно пропустил, дело не в ней :)

preg_match("/[\t ]*([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})[\t ]*:/", $string, $matches)

и

http://seoparser.ru/t/r.php

Не работают, или я чего то не понял.

Нужно чтобы ОДНА функция могла получить IP из ЛЮБОЙ из строк:

123.123.123.123

123.123.123.123:8000

ewg777
На сайте с 04.06.2007
Offline
225
#9
el_aspect:

Нужно чтобы ОДНА функция могла получить IP из ЛЮБОЙ из строк:
123.123.123.123
123.123.123.123:8000

Если совсем в лоб.

	if(strstr($str, ':')) {
$str = strstr($str, ':', true);
}
$str = trim($str);
EA
На сайте с 15.02.2007
Offline
29
#10

ewg777, идея понятна, хотел так сделать с самого начала, НО:

$user = strstr($email, '@', true); // As of PHP 5.3.0
echo $user; // prints name

У меня Версия PHP: 4.4.2

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий