[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: как кратко вырезать подстроку из html кода
skolozhabskiy
добрый день,

проблема как вырезать средствами php подстроку из строки самым оптимальным способом.

строка :

<html><head></head><body>Current IP Address: 178.94.41.150<br>Hostname: localhost
</body></html>



код получения подстроки - 178.94.41.150:


$data = '<head></head><body>Current IP Address: 178.94.41.150<br>Hostname: localhost
</body></html>'
;
$data = explode('<br>', $data);
$ip = explode(' ', $data[0]);
echo "<pre>";
print_r($ip[3]);


ищу решение, чтобы дважды не использовать explode
примечание - длина подстроки может быть неизвестна!


спасибо



Спустя 5 минут, 8 секунд (1.05.2012 - 11:11) m4a1fox написал(а):
Регулярные выражения вам в помощь.

Спустя 2 минуты, 14 секунд (1.05.2012 - 11:13) skolozhabskiy написал(а):
спасибо, а как построить такое регулярное выражение в конкретном случае?
несилен в регулярных выражениях

спасибо

Спустя 1 минута, 30 секунд (1.05.2012 - 11:15) Adamant написал(а):

preg_match('/<body>[\D]+([\d.]+)/i', $str, $matches);

echo $matches[1];



Вам будет полезно http://phpclub.ru/detail/article/regexp_1
http://phpclub.ru/detail/article/regexp_2

Спустя 4 минуты, 22 секунды (1.05.2012 - 11:19) skolozhabskiy написал(а):
спасибо за решение, но я получаю пустой массив.



$data = '<head></head><body>Current IP Address: 178.94.41.150<br>Hostname: localhost
</body></html>'
;
preg_match('/<body>[\D]+([\d.]+)/i', $data, $matches);
echo $matches[1]; // так ошибка
echo "<pre>";
print_r($matches); // так пустой массив


в чем ошибка?

спасибо

Спустя 6 минут, 17 секунд (1.05.2012 - 11:25) Adamant написал(а):
Что пишет, какая ошибка? У меня все работает корректно



178.94.41.150
Array
(
[0] => Current IP Address: 178.94.41.150
[1] => 178.94.41.150
)

Спустя 1 минута, 18 секунд (1.05.2012 - 11:27) skolozhabskiy написал(а):
ошибка : Notice: Undefined offset: 1 in C:\Apache\test.ru\www\testing\_test.php on line 66

я беру эти данные вот так:

полный код:
$data = file_get_contents("http://dynamic.zoneedit.com/checkip.html");
preg_match('/<body>[\D]+([\d.]+)/i', $data, $matches);
echo $matches[1]; // так ошибка
echo "<pre>";
print_r($matches); // так пустой массив


может в этом проблемка?

спасибо

Спустя 1 минута, 26 секунд (1.05.2012 - 11:28) Adamant написал(а):
Цитата (skolozhabskiy @ 1.05.2012 - 15:27)
ошибка : Notice: Undefined offset: 1 in C:\Apache\test.ru\www\testing\_test.php on line 66


А что у вас находится на 66 строке? Код приведите

Спустя 5 минут, 57 секунд (1.05.2012 - 11:34) Adamant написал(а):
Капец. А где вы в коде вашего сайта нашли body?

$data = file_get_contents("http://dynamic.zoneedit.com/checkip.html");
preg_match('/[\D]+([\d.]+)/i', $data, $matches);
echo $matches[1];
echo "<pre>";
print_r($matches);
?>

Спустя 2 минуты, 4 секунды (1.05.2012 - 11:36) skolozhabskiy написал(а):
спасибо, я понял решение. лишним в выражении было <body>

еще раз спасибо
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.