У меня вот такая задачка. Есть html код в котором есть контейнер
<div id="content">
тут куча кода со всякими дивами.
</div>
Мне нужно найти этот блок на странице. Нужно именно чтобы начинался блок с <div id="content">и заканчивался со своей парой </div>. Заранее спасибо!
Спустя 6 минут, 31 секунда (5.02.2012 - 18:54) Игорь_Vasinsky написал(а):
в $content - твой html кусок
для UTF-8 добавь модификатор u
preg_match("#<div id=\"content\">([^</div>].+)</div>#ismU", $content, $matches);
echo '<pre>' . print_r($matches, 1) . '</pre>';
для UTF-8 добавь модификатор u
Спустя 12 минут, 30 секунд (5.02.2012 - 19:07) major28 написал(а):
чет твой кусок кода не работает)))
([^<\div>]. тут наверно слеш в другую сторону .... но все ранвно не работает(
([^<\div>]. тут наверно слеш в другую сторону .... но все ранвно не работает(
Спустя 10 минут, 24 секунды (5.02.2012 - 19:17) major28 написал(а):
после пару экспериментов выяснил что ваш скрипт работает если только в div id cintent находится еще одна пара div а если больше то скрипт не работает
Спустя 2 минуты, 40 секунд (5.02.2012 - 19:20) Игорь_Vasinsky написал(а):
Цитата |
ваш скрипт работает если только в div id cintent находится еще одна пара div а если больше то скрипт не работает |
глянька, в одном из элементов массива
preg_match_all("#<div.*>(.+)</div>#ismU", $content, $matches);
echo '<pre>' . print_r($matches, 1) . '</pre>';
Спустя 2 минуты, 32 секунды (5.02.2012 - 19:22) major28 написал(а):
тоже самое(
Спустя 1 минута, 50 секунд (5.02.2012 - 19:24) Игорь_Vasinsky написал(а):
дай контент в html виде с которым ты работаешь
Спустя 6 минут, 48 секунд (5.02.2012 - 19:31) major28 написал(а):
вот примитивный пример контента
<div id="content">
123
<div>312</div>
<div>312</div>
321
<div>3ро2</div>
пропрао
</div>
Спустя 24 минуты, 14 секунд (5.02.2012 - 19:55) Scorpius написал(а):
Согласен, что не оптимально, но:
preg_match("#<div id=\"content\">((?:[.\r\n\t\s\w]*<div[^>]*>[^<]*</div>)*[.\r\n\t\s\w]*)</div>#ismU", $content, $matches);
echo $matches[1];
Спустя 1 минута, 28 секунд (5.02.2012 - 19:57) Игорь_Vasinsky написал(а):
а да.. переборщил с модификаторами))
вернул
весь массив
<?php
$content = file_get_contents('html.txt');
preg_match_all("#(<div.*>.+</div>)#is", $content, $matches);
echo '<pre>' . print_r(array_map('htmlspecialchars', $matches[0]), 1) . '</pre>';
?>
вернул
Array
(
[0] => <div id="content">
123
<div>312</div>
<div>312</div>
321
<div>3ро2</div>
пропрао
</div>
)
весь массив
echo '<pre>' . print_r($matches, 1) . '</pre>';
Спустя 23 минуты, 1 секунда (5.02.2012 - 20:20) major28 написал(а):
))) я прислал примитивный кусок)))
ваша регулярка не ищет id=content и не ищет ее парную </div>
ваша регулярка не ищет id=content и не ищет ее парную </div>
<div class="test">
.....
<div>......</div>
.....
<div id="content">
123
<div>312</div>
<div>312</div>
321
<div>3ро2</div>
пропрао
</div>
.....
<div>......</div>
.....
<div>
мне нужно получить
<div id="content">
123
<div>312</div>
<div>312</div>
321
<div>3ро2</div>
пропрао
</div>
Спустя 6 минут, 1 секунда (5.02.2012 - 20:26) Игорь_Vasinsky написал(а):
Цитата |
))) я прислал примитивный кусок))) |
понятно. я своё время трачу, а ты примитиивные куски шлёшь.... удач. я гаданием на кофейной гуще не занимаюсь.
Спустя 5 минут, 10 секунд (5.02.2012 - 20:31) major28 написал(а):
Цитата |
У меня вот такая задачка. Есть html код в котором есть контейнер <div id="content"> тут куча кода со всякими дивами. </div> |
Спустя 9 минут, 34 секунды (5.02.2012 - 20:40) Scorpius написал(а):
$content = file_get_contents('index.htm');
preg_match("#<div id=\"content\">(?:[.\r\n\t\s\w]*<div[^>]*>[^<]*</div>)*[.\r\n\t\s\w]*</div>#ismU", $content, $match);
var_dump($match[0]);
Результат:
string '<div id="content">
123
<div>312</div>
<div>312</div>
321
<div>3ро2</div>
пропрао
</div>' (length=104)
Спустя 9 минут, 53 секунды (5.02.2012 - 20:50) Игорь_Vasinsky написал(а):
Цитата |
дай контент в html виде с которым ты работаешь |
Спустя 2 минуты, 3 секунды (5.02.2012 - 20:52) major28 написал(а):
мой контент очень большой и не структурированный, смысла кидать вам его нет, я просто описал ее структуру, этого должно хватить для решения задачи
Спустя 17 минут, 23 секунды (5.02.2012 - 21:10) Scorpius написал(а):
Чем вам мой код не устраивает? Или во всём контенте не срабатывает?
Спустя 1 час, 28 минут, 11 секунд (5.02.2012 - 22:38) dadli написал(а):
major28
может бить не самии оптимални варянт, но кожется работает
может бить не самии оптимални варянт, но кожется работает
$str = '<div class="test">
.....
<div>......</div>
.....
<div id="content">
123
<div>312</div>
<div>312</div>
321
<div>3ро2</div>
пропрао
sssss
</div>
.....
<div>...boloswina...</div>
..bolo...
<div>';
preg_match("#<div id=\"content\">.*#usi",$str,$match);
preg_match_all("#</div>(.*)</div>#usU",$match[0],$mas);
$mas = preg_grep("#<div>#",$mas[1],PREG_GREP_INVERT);
preg_match('#<div id="content">.*'.$mas[1].'#usU',$str,$mass);
$text = $mass[0]."</div>";
echo $text;
Спустя 9 дней, 1 час, 32 минуты, 16 секунд (15.02.2012 - 00:10) tp123 написал(а):
preg_match_all('<div id=\"content\">(.*?)<\/div>',$all_html, $result);
print_r($result);
print_r($result);
Спустя 5 часов, 55 минут, 59 секунд (15.02.2012 - 06:06) Игорь_Vasinsky написал(а):
может
preg_match_all('/<div id=\"content\">(.*?)<\/div>/s',$all_html, $result);
print_r($result);
Спустя 1 день, 6 часов, 5 минут, 40 секунд (16.02.2012 - 12:12) #8bit написал(а):
Вот:
Выводит то что надо
$str = '<div class="test">
.....
<div>......</div>
.....
<div id="content">
123
<div>312</div>
<div>312</div>
321
<div>3ро2</div>
пропрао
</div>
.....
<div>......</div>
.....
<div>';
preg_match('#<div id=\"content\">.*?(?:<div>.*?</div>.*?)*</div>#s', $str, $arr);
echo '<pre>';
var_dump($arr);
echo '</pre>';
Выводит то что надо