[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как выдернуть из кучи кода <div id=>контент</div>
major28
Здравствуйте!
У меня вот такая задачка. Есть html код в котором есть контейнер
<div id="content">
тут куча кода со всякими дивами.
</div>

Мне нужно найти этот блок на странице. Нужно именно чтобы начинался блок с <div id="content">и заканчивался со своей парой </div>. Заранее спасибо!



Спустя 6 минут, 31 секунда (5.02.2012 - 18:54) Игорь_Vasinsky написал(а):
в $content - твой html кусок

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>]. тут наверно слеш в другую сторону .... но все ранвно не работает(

Спустя 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>


<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);

Спустя 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>';

Выводит то что надо
Быстрый ответ:

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