Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не работает preg_match, регулярное выражение 
:(
    Опции темы
vintyara
Дата 21.10.2006, 00:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 491
Регистрация: 24.3.2005
Где: Ode$$a

Репутация: 1
Всего: 2



Нужно мне выдрать из большой кучи текста ip адрес.
Вот к примеру есть такой код:

Код

<?php
  $ifconf=`ifconfig ppp0`;
  preg_match('#addr\:(\d+)\.(\d+)\.(\d+)\.(\d+) P#'), $ifconf, $ip);
  print_r ($ip);
  echo $ip;
  echo '<br>'.$ifconf;

 ?>


Вот что даёт :

Код

Array ( ) Array
ppp0 Link encap:Point-to-Point Protocol inet addr:213.130.6.91 P-t-P:213.130.1.251 Mask:255.255.255.255 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1 RX packets:24219 errors:1 dropped:0 overruns:0 frame:0 TX packets:24815 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:3 RX bytes:27501304 (26.2 Mb) TX bytes:2109528 (2.0 Mb)


Кусок кода - echo $ip;  echo '<br>'.$ifconf; я вставил специально, чтобы показать что хранится в моих переменных и как это отображается на экране. Желаемый результат для меня - 213.130.6.91. Но увы smile Почему ?
PM MAIL ICQ   Вверх
Black Rabbit
Дата 21.10.2006, 02:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 21.10.2004

Репутация: нет
Всего: 2



Код

$ifconf ="ppp0 Link encap:Point-to-Point Protocol inet addr:213.130.6.91 P-t-P:213.130.1.251 Mask:255.255.255.255 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1 RX packets:24219 errors:1 dropped:0 overruns:0 frame:0 TX packets:24815 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:3 RX bytes:27501304 (26.2 Mb) TX bytes:2109528 (2.0 Mb)";

preg_match('/addr\:((\d{1,3}\.){3}\d{1,3})\sP/sU', $ifconf, $ip);
print_r($ip);
 

На выходе дает
Array
(
    [0] => addr:213.130.6.91 P
    [1] => 213.130.6.91
    [2] => 6.
)


PM MAIL ICQ   Вверх
vintyara
Дата 21.10.2006, 10:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 491
Регистрация: 24.3.2005
Где: Ode$$a

Репутация: 1
Всего: 2



Black Rabbit, 
у меня нет smile опять выдаёт
Array ( ) Array

Как такое может быть ????  smile 
PM MAIL ICQ   Вверх
-=Ustas=-
Дата 21.10.2006, 11:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


Профиль
Группа: Участник Клуба
Сообщений: 2222
Регистрация: 21.1.2005
Где: Краснодар

Репутация: 32
Всего: 69



vintyara, значит ты что то не то делаешь, т.к. регулярка, которую привел Black Rabbit, работает нормально.


--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
vintyara
Дата 21.10.2006, 12:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 491
Регистрация: 24.3.2005
Где: Ode$$a

Репутация: 1
Всего: 2



Да ! Действительно smile Мой глюк smile
Спасибо ! smile 

PM MAIL ICQ   Вверх
vintyara
Дата 23.11.2006, 12:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 491
Регистрация: 24.3.2005
Где: Ode$$a

Репутация: 1
Всего: 2



и всё же smile
вот такое работает : 

Код

$ifconf ="ppp0 Link encap:Point-to-Point Protocol inet addr:213.130.6.91 P-t-P:213.130.1.251 Mask:255.255.255.255 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1 RX packets:24219 errors:1 dropped:0 overruns:0 frame:0 TX packets:24815 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:3 RX bytes:27501304 (26.2 Mb) TX bytes:2109528 (2.0 Mb)";
preg_match('/addr\:((\d{1,3}\.){3}\d{1,3})\sP/sU', $ifconf, $ip);
print_r($ip);


а такое нет:

Код

 $ifconf=`ifconfig ppp0`;
preg_match('/addr\:((\d{1,3}\.){3}\d{1,3})\sP/sU', $ifconf, $ip);
print_r($ip);


Выводит пустой массив. Проверял ехом -

Код

 $ifconf=`ifconfig ppp0`;
echo $ifconf;

переменная ифконф не пуста и имеет "нужный текст". почему ?
PM MAIL ICQ   Вверх
smartov
Дата 23.11.2006, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 7
Всего: 259



vintyara,
Для затравки: почему бы тебе твою команду (ifconfig ppp0) не обработать по-нормальному. Через exec. Получить нормально результат и всё такое. 

По теме.
`ifconfig ppp0` - у меня нету ppp0 зато есть eth0
Код

aac [~] $ ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 00:0B:6A:72:CA:9C
          inet addr:192.168.101.13  Bcast:192.168.101.255  Mask:255.255.255.0


Как видишь ip-шник только во второй строке. Ясен пончик что регулярка не срабатывает. multiline включать надо.
Код

preg_match('/addr\:((\d{1,3}\.){3}\d{1,3})\sP/Ums', ...

PM MAIL   Вверх
vintyara
Дата 23.11.2006, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 491
Регистрация: 24.3.2005
Где: Ode$$a

Репутация: 1
Всего: 2



smartov, 
пробовал мультилайн включать. то же самео. пробовал даже

Код

$ifconf = shell_exec("ifconfig ppp0 | grep ppp0");


и то же пусто smile
PM MAIL ICQ   Вверх
smartov
Дата 23.11.2006, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 7
Всего: 259



У меня вот так работает

Код

$eee = exec("/sbin/ifconfig eth0", &$ifconf);

preg_match('/addr\:((\d{1,3}\.){3}\d{1,3})\s/Ums', join(" ", $ifconf), $ip);
print_r($ip);


Найди где у тебя лежит ifconfig (команда which ifconfig) и юзай абсолютный путь к нему.
PM MAIL   Вверх
vintyara
Дата 23.11.2006, 19:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 491
Регистрация: 24.3.2005
Где: Ode$$a

Репутация: 1
Всего: 2



smartov, 
спасибо !

PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0539 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.