[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помогите с регуляркой (html, div)
++Norton++
Помогите с регуляркой.
Есть html-страница, в ней есть некоторый текст, который находится между тегами:

<div class="main-text mem">здесь_нужный_текст</div>

Пробовал такой вариант:
preg_match_all("/<div class=\"main-text mem\">(.*)<\/div/", $html, $result);

и такой:
preg_match_all('/<div class="main-text mem">(.*?)<\/div>/', $html, $result);


Где $html - этот html текст страницы, однако не срабатывает. Возвращает пустой массив $result. Как лучше сделать? Вторые сутки уже бьюсь....
Заранее огромное спасибо!



Спустя 27 минут, 55 секунд (7.07.2010 - 23:41) DedMorozzz написал(а):
<?php
$a='<div class="main-text mem">здесь_нужный_текст</div>';
preg_match_all("#<div class=\"main-text mem\">(.*?)</div>#",$a,$matches);
echo $matches[1][0];//здесь_нужный_текст
?>

Спустя 4 минуты, 52 секунды (7.07.2010 - 23:46) Ice написал(а):
HTML

<div class="main-text mem"><h2>Hello, world!</h2></div>

PHP

$html = file_get_contents('preghtml.html');

preg_match('/<div class="main-text mem">(.*)<\/div>/', $html, $m);
print 'Найдены совпадения: '. htmlspecialchars($m[0]);

то? smile.gif

Спустя 1 минута, 39 секунд (7.07.2010 - 23:48) DedMorozzz написал(а):
Цитата
m">(.*)<\/
использование "жадного" поиска, здесь не годится.

Спустя 3 минуты (7.07.2010 - 23:51) DedMorozzz написал(а):
и что?! Звёздочка это от 0 до бесконечности
ЗЫ: какой смысл удалять сообщения, когда на НЕГО ниже ответ?

Спустя 23 минуты, 24 секунды (8.07.2010 - 00:14) Ice написал(а):
ЗЫ не думал, что ты так быстро успеешь его прочитать, да к тому же еще и ответить smile.gif

Спустя 14 минут, 57 секунд (8.07.2010 - 00:29) ++Norton++ написал(а):
Спасибо ребята! Регулярки работают, только вот есть одна проблема... они работают если вся запись в одну строку, т.е.:

<div class="main-text mem"><h2>Hello, world!</h2></div>

Но очень часто в файле встречается такая, напирмер, запись:

<div class="main-text mem"><h2>Hello, world!</h2>
</div>


или такая:

<div class="main-text mem">
<h2>
Hello, world!</h2>
</div>


Тогда регулярка не работает. Можно ли как нибудь в переменной, содержащей html-текст убрать все эти переносы строк, чтобы обрабатывалось правильно?

Спустя 11 минут, 28 секунд (8.07.2010 - 00:41) kirik написал(а):
Цитата (++Norton++ @ 7.07.2010 - 16:29)
Можно ли как нибудь в переменной, содержащей html-текст убрать все эти переносы строк, чтобы обрабатывалось правильно?

Зачем что-то убирать?)) Просто добавь воды модификатор s к регулярке:
Цитата (DedMorozzz @ 7.07.2010 - 15:41)
preg_match_all("#<div class=\"main-text mem\">(.*?)</div>#s",$a,$matches);


Спустя 9 часов, 6 минут, 39 секунд (8.07.2010 - 09:47) ++Norton++ написал(а):
Огромное всем спасибо! Все заработало!
Быстрый ответ:

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