Форум успешных вебмастеров - GoFuckBiz.com

  Форум успешных вебмастеров - GoFuckBiz.com > Бизнес-решения > Скрипты, программы и технические решения
Дата
USD/RUB58.6510
BTC/USD0.0000
Скрипты, программы и технические решения Обсуждаем скрипты, программы и новые технологии.

Закрытая тема
Опции темы Опции просмотра
Старый 16.09.2010, 15:49   #1
LorikX
Senior Member
 
Регистрация: 07.01.2008
Сообщений: 148
Бабло: $19810
Отправить сообщение для LorikX с помощью ICQ
По умолчанию подзаебался с регуляркой в PHP нужна помощь!!!!

Есть такая строка:
PHP код:
$string  '
<div>
    <div>aaa
        <div>bbb
            <div>ccc</div>
        </div>
        ddd
    </div>
    eee    
</div>'

нужна регулярка что бы в масив собирала всё что лежит внутри тега DIV за исключеним вложенных дивов. т.е. результат
должен быть что то типа:
PHP код:
[1] => Array ( 
        [
0] => 'aaa'
        
[1] => 'bbb'
        
[2] => 'ccc'
        
[3] => 'ddd'
        
[4] => 'eee'  

Есть решиние ?
__________________
Желаний больше чем денег !!!
LorikX вне форума  
Старый 16.09.2010, 15:59   #2
KYO
blackseo
 
Аватар для KYO
 
Регистрация: 04.04.2007
Адрес: StandAlone
Сообщений: 1,060
Бабло: $196065
Отправить сообщение для KYO с помощью ICQ
По умолчанию

preg_match_all("/div>(.+?)</",$str,$matches);

тока переносы строк убери.

а если что-то сложное берем HTML парсер и парсим DOM-структуру.
__________________
Возьми домой раненую осу и ты узнаешь, чем платит доброта
KYO вне форума  
Старый 16.09.2010, 16:18   #3
oledj
Senior Member
 
Аватар для oledj
 
Регистрация: 23.07.2008
Адрес: Kiev
Сообщений: 395
Бабло: $76145
Отправить сообщение для oledj с помощью ICQ
По умолчанию

Именно данный пример можно так

PHP код:

<?php
$string  

<div> 
    <div>aaa 
        <div>bbb 
            <div>ccc</div> 
        </div> 
        ddd 
    </div> 
    eee     
</div>'


$string array_values(array_diff(array_map('trim'explode("\n"strip_tags($string))), array('')));

print_r($string);

?>
oledj вне форума  
Старый 16.09.2010, 16:19   #4
drafter
Юниор
 
Регистрация: 15.09.2010
Сообщений: 18
Бабло: $6110
По умолчанию

можно попробовать что-то вроде "~(?<=<div>).*?(?R).*?(?=</div>)~msi".
Вообще KYO +1, логичнее парсить такие вещи через DOM. Регулярка не для того.
drafter вне форума  
Старый 16.09.2010, 16:46   #5
LorikX
Senior Member
 
Регистрация: 07.01.2008
Сообщений: 148
Бабло: $19810
ТС -->
Отправить сообщение для LorikX с помощью ICQ
автор темы ТС По умолчанию

решился делать через DOM другого выхода нет.
__________________
Желаний больше чем денег !!!
LorikX вне форума  
Старый 16.09.2010, 19:54   #6
IFund
Senior Member
 
Регистрация: 24.09.2009
Сообщений: 267
Бабло: $49180
По умолчанию

Сорри за вопрос, а как парсить через DOM - всегда делал регуляркой. Может проще будет чем регуляркой.
Например в приведенном примере как это делать?
Мож я это делаю, но не знаю, что именно так делаю?
(Во загнул, аж сам запутался
IFund вне форума  
Старый 16.09.2010, 20:13   #7
lorien
Senior Member
 
Аватар для lorien
 
Регистрация: 18.05.2009
Сообщений: 879
Бабло: $177835
Отправить сообщение для lorien с помощью Skype™
По умолчанию

> а как парсить через DOM

Как-то так: http://www.google.ru/search?sourceid...rsing+html+dom
lorien вне форума  
Старый 16.09.2010, 21:59   #8
rushter
Senior Member
 
Регистрация: 28.11.2009
Сообщений: 1,804
Бабло: $299365
По умолчанию

Цитата:
Сообщение от LorikX Посмотреть сообщение
решился делать через DOM другого выхода нет.
Не может чтобы выхода не было
rushter вне форума