Помогите по регулярке,пожалуйста

Тема в разделе "PHP", создана пользователем асс, 3 мар 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. асс

    асс

    Регистр.:
    13 окт 2006
    Сообщения:
    749
    Симпатии:
    220
    Добрый день.
    Проблема такая.

    Есть текст
    HTML:
    
    <h2 class="title"> <a target="_self" class="usg-AFQjCNEHloN_-29wsxBCdk_mRQzZtiskeA sig2-fLMwhtS56W7cO8UYpftOoA" href="[B]http://www.rian.ru/society/20090303/163711170.html[/B]"><b>[B]Путин[/B]</b> [B]осмотрел общежитие Московского физико-технического института[/B]</a>
    </h2>
    <div class="sub-title"><span class="source">РИА Новости</span>&nbsp;-&nbsp;<span class="date">&lrm;3 час. назад&lrm;</span></div>
    <div class="body"><div class="snippet">[B]ДОЛГОПРУДНЫЙ (Московская область), 3 мар - РИА Новости. Премьер-министр России Владимир [/B]<b>[B]Путин[/B]</b> [B]во вторник осмотрел в подмосковном городе Долгопрудный новое 17-этажное здание общежития Московского физико-технического института (МФТИ), построенное на средства федерального бюджета. Премьера сопровождали ректор МФТИ Николай Кудрявцев, губернатор Московской области Борис Громов и министр образования и науки РФ Андрей Фурсенко. Ректор института сообщил, что это девятое общежитие, которое строилось 2,5 года. [/B]<b>[B]...[/B]</b></div>

    Мне нужно подправить регулярку чтоб она хватала то что выделено жирным.


    Вот старый текст его берет эта регулярка
    PHP:
      preg_match_all("/<div class=lh><a href=\"([^\"]*)\"[^>]*>(.*?)<\/a><br><font[^>]*><font[^>]*>[^<]*<\/font> <nobr>[^<]*<\/nobr><\/font><br><font[^>]*>(.*?)(<b>...<\/b>)?<\/font>/",$NewsText,$match); 

    мне нужно исправить регулярку чтоб она брала текст который я указал первым.
    HTML:
    
    <div class=lh><a href="http://news.google.ru/news/url?sa=T&ct=ru/0-0&fd=R&url=[B]http://www.flower-shop.ru/news/article-2009-01-08-408.html&cid=1268115358&ei=Rn9uSenVMaXEwAG_ia2JDg&usg=AFQjCNH6y81MKPIsplXdPYygM8g97YWipg[/B]">[B]В центре Лондона появился рукотворный оазис[/B]</a><br><font size=-1><font color=#6f6f6f>Flower-shop.ru&nbsp;-</font> <nobr>8 янв 2009</nobr></font><br><font size=-1>[B]Здесь можно позавтракать на свежем воздухе, увидеть чудесные цветы - африканские лилии, жасмин, розы... Отсюда уже видна лужайка, окруженная потрясающей красоты деревьями и многолетними кустарниками. Среди них можно заметить и новозеландский лен, и душистую астелию, и плакучую иву. На уход за садом у Уинкл и Филиппа уходит много времени, но счастливые улыбки гостей стоят этого. <Наши гости очень благодарны нам. Некоторые из них даже фотографируют на память каждый [/B]<b>[B]уголок[/B]</b> [B]сада. <b>...</b></font>
    [/B]

    может кто помочь?
     
  2. dee_motard

    dee_motard

    Регистр.:
    26 июл 2008
    Сообщения:
    247
    Симпатии:
    76
    что-то я не понял.. Тебе код пробела и коды & lrm; нужно вырезать? Или наоборот, только их оставить? :be:

    Что имеется в виду под старым текстом?
     
  3. асс

    асс

    Регистр.:
    13 окт 2006
    Сообщения:
    749
    Симпатии:
    220
    Старый текст работает он указан только для примера.
    Мне нужно вырезать ссылку название и текст из нового текста.


    По сути почти сделал сам
    но что то у меня получаеться малек фигня.
     
  4. Igor123

    Igor123 Постоялец

    Регистр.:
    14 июн 2008
    Сообщения:
    116
    Симпатии:
    13
    готов помочь, но тоже не догнал что конкретно надо вытягивать
    дай ссылку на страницу
    покажи 1) 2) куски которые надо вытягивать.
     
  5. асс

    асс

    Регистр.:
    13 окт 2006
    Сообщения:
    749
    Симпатии:
    220
    Вот текст

    <h2 class="title"><a target="_self" class="usg-AFQjCNEGOvGywk4hDScmshBumh4vdeLxpw sig2-mFLYEdS188dfjbBlELh89Q" href="http://news.bbc.co.uk/hi/russian/uk/newsid_7920000/7920270.stm"><b>Путин</b> и Медведев: политический раскол углубляется</a>
    </h2>
    <div class="sub-title"><span class="source">Би-би-си</span>&nbsp;-&nbsp;<span class="date">&lrm;7 час. назад&lrm;</span></div>
    <div class="body"><div class="snippet">Московский корреспондент газеты Times напоминает, что год спустя после избрания Дмитрия Медведева на пост президента, большинство россиян по-прежнему считают, что главной фигурой в стране является Владимир <b>Путин</b>. Либералы, надеявшиеся на &quot;оттепель&quot; после прихода к власти Дмитрия Медведева, не связанного с компартией или КГБ, были сильно разочарованы. Лишним доказательством крушения их надежд стал новый процесс над Михаилом Ходорковским, который многие называют вендеттой <b>Путина</b> за то, что бывший олигарх <b>...</b></div>


    Вот обработаный текст . Это то что должно быть после обработки регулярками



    [1] => Array
    (
    [0] => http://news.bbc.co.uk/hi/russian/uk/newsid_7920000/7920270.stm
    )

    [2] => Array
    (
    [0] => Путин и Медведев: политический раскол углубляется
    )

    [3] => Array
    (
    [0] => Московский корреспондент газеты Times напоминает, что год спустя после избрания Дмитрия Медведева на пост президента, большинство россиян по-прежнему считают, что главной фигурой в стране является Владимир Путин. Либералы, надеявшиеся на &quot;оттепель&quot; после прихода к власти Дмитрия Медведева, не связанного с компартией или КГБ, были сильно разочарованы. Лишним доказательством крушения их надежд стал новый процесс над Михаилом Ходорковским, который многие называют вендеттой Путина за то, что бывший олигарх ...
    )

    [4] => Array
    (
    [0] =>
    )

    )


    а вот регулярка которой я сейчас выдергиваю то что указал выше

    preg_match_all("/<h2 class=\"title\"><a href=[^>]*>(.*?)<\/a>(.*?)<\/div>/s",$NewsText,$match);
    return $match;

    локально с локального хоста сайта работает как надо.
    А вот с сайта донора не тянет
    вернее тянет не правильно

    Добавлено через 7 минут
    Вот указал проще простого, мне нужно все что указано словом ОСТАВИТЬ

    <h2 class="title"><a target="_self" class="usg-AFQjCNEGOvGywk4hDScmshBumh4vdeLxpw sig2-mFLYEdS188dfjbBlELh89Q" href="ОСТАВИТЬ"><b>ОСТАВИТЬ</b> ОСТАВИТЬ</a>
    </h2>
    <div class="sub-title"><span class="source">Би-би-си</span>&nbsp;-&nbsp;<span class="date">&lrm;7 час. назад&lrm;</span></div>
    <div class="body"><div class="snippet">ОСТАВИТЬ <b>...</b></div>
    все что не жирное, мне не нужно
     
  6. NoN

    NoN Постоялец

    Регистр.:
    25 ноя 2008
    Сообщения:
    79
    Симпатии:
    33
    Не супер решение зато работает :D

    Код:
    $NewsText='
    <h2 class="title"><a target="_self" class="usg-AFQjCNEGOvGywk4hDScmshBumh4vdeLxpw sig2-mFLYEdS188dfjbBlELh89Q" href="http://news.bbc.co.uk/hi/russian/uk/newsid_7920000/7920270.stm"><b>Путин</b> и Медведев: политический раскол углубляется</a>
    </h2>
    <div class="sub-title"><span class="source">Би-би-си</span>&nbsp;-&nbsp;<span class="date">&lrm;7 час. назад&lrm;</span></div>
    <div class="body"><div class="snippet">Московский корреспондент газеты Times напоминает, что год спустя после избрания Дмитрия Медведева на пост президента, большинство россиян по-прежнему считают, что главной фигурой в стране является Владимир <b>Путин</b>. Либералы, надеявшиеся на &quot;оттепель&quot; после прихода к власти Дмитрия Медведева, не связанного с компартией или КГБ, были сильно разочарованы. Лишним доказательством крушения их надежд стал новый процесс над Михаилом Ходорковским, который многие называют вендеттой <b>Путина</b> за то, что бывший олигарх <b>...</b></div>
    ';
    
    $NewsText=str_replace("<b>","",$NewsText);
    $NewsText=str_replace("</b>","",$NewsText);
    
    preg_match_all("/href=\"([^>]*)\">([^<]*)<\/a>/i",$NewsText,$match);
    preg_match_all("/div class=\"body\"><div class=\"snippet\">([^<]*)<\/div>/i",$NewsText,$match2);
    
    print_r($match);
    print_r($match2);
     
  7. OnArs

    OnArs

    Регистр.:
    30 авг 2008
    Сообщения:
    259
    Симпатии:
    74
    2ACC:
    Отличный иснструмент для проверки регулярок:
    _http://www.regexpr.ru/

    Иногда, когда на форумах ответа не могу дождаться пользуюсь им, методом тыка и анализом ответов на чужие вопросы :)
     
  8. асс

    асс

    Регистр.:
    13 окт 2006
    Сообщения:
    749
    Симпатии:
    220
    В общем разобрался сам. Просто я хотел чтоб магомед пришел к горе.
    А это никак не получалось.
    В итоге сделал чтоб гора пришла к магомеду :D
    Сам стормозим. Там дела на минуту было.
    Проблемма была в том что там условие в функции
    если в двумерном массиве приходят не все знаения то он не работал.


    К стати скажите пожалуйста.Есть функция
    пример


    имя функции(переменная)
    {
    код функции
    }


    эта функция как работает ? сам принцип?
    Если я правильно понял то ее сделав один раз можно вызвать в любом месте сркипта
    не важно где в конце кода или в начале.


    Тоесть к примеру если в коде PHP

    есть переменная которая в коде являеться предпоследней строкой
    $vas="7475483784758";
    ?>

    и если я напишу echo $vas;
    после отклывающего тега
    вот пример, то ничего не будет выведено?

    <?php
    echo $vas;
    $vas="7475483784758";
    ?>

    А
    в функции будет выведено даже если функция определлена в конце кода.

    Верно я мыслю или нет?
     
  9. BuzzDD

    BuzzDD Постоялец

    Регистр.:
    9 фев 2009
    Сообщения:
    76
    Симпатии:
    5
    http://ua2.php.net/functions
    Там всё понятно написано,определяешь функцию в любом месте и переменную ставишь тоже в любом.
    И вообще,это уже отклонение от темы!
     
  10. Acidrayne

    Acidrayne

    Регистр.:
    30 сен 2007
    Сообщения:
    296
    Симпатии:
    20
    Помогите и мне тогда!Скажу сразу , что я ничего не смыслю в регулярных выражениях. Есть форма, данные из которой передаются некому скрипту, и нужно отфильтровать все кроме цифр! Заранее благодарен
     
Статус темы:
Закрыта.