Регулярка

Тема в разделе "Как сделать...", создана пользователем AchiLLeSS, 20 июл 2010.

Статус темы:
Закрыта.
  1. AchiLLeSS

    AchiLLeSS

    Регистр.:
    13 дек 2006
    Сообщения:
    841
    Симпатии:
    415

    есть регуляка

    $pat16="!m_act%5Bcountry%5D\/[0-9]+\/\">(.*?)<\/a>!si";

    но она хавает 2 куска кода


    <a href="/level/10/m_act%5Bcountry%5D/3/"><img src="/images/flags/flag-3.gif" width="16" height="11" style="border: 1px #fff solid; display: block" alt="США" title="США" /></a>
    </td><td style="border: 1px #ccc solid">
    <a href="/level/10/m_act%5Bcountry%5D/8/"><img src="/images/flags/flag-8.gif" width="16" height="11" style="border: 1px #fff solid; display: block" alt="Франция" title="Франция" /></a>
    </td><td style="border: 1px #ccc solid">

    а нужно что бы хавало только вторую часть

    <tr><td class="type">страна</td><td class=""><a href="/level/10/m_act%5Bcountry%5D/3/">США</a>, <a href="/level/10/m_act%5Bcountry%5D/8/">Франция</a>, <a href="/level/10/m_act%5Bcountry%5D/14/">Италия</a>, <a href="/level/10/m_act%5Bcountry%5D/15/">Испания</a></td></tr>



     
  2. unsiker

    unsiker

    Регистр.:
    6 июн 2008
    Сообщения:
    465
    Симпатии:
    172
    что мешает сделать preg_match_all и хапать в исходящем масиве вторую часть? ИХМО способ более практичный, так как можно проверки разные ставить (например есть первая запись, а второй нету и тогда выбирать первую).
     
  3. AchiLLeSS

    AchiLLeSS

    Регистр.:
    13 дек 2006
    Сообщения:
    841
    Симпатии:
    415
    может проще и правильнее, если ты хорошо знаком с ПХП и пишешь с нуля, а не правишь готовый
     
  4. LEE_ROY

    LEE_ROY

    Регистр.:
    26 янв 2007
    Сообщения:
    205
    Симпатии:
    20
    выложи код и регулярку на pastebin.com, ибо форум косячит
     
  5. AchiLLeSS

    AchiLLeSS

    Регистр.:
    13 дек 2006
    Сообщения:
    841
    Симпатии:
    415
  6. pitkina

    pitkina

    Регистр.:
    1 апр 2007
    Сообщения:
    253
    Симпатии:
    176
    PHP:
    # 2 часть с 1 вхождения m_act
    $pat16="!m_act%5Bcountry%5D\/\d+\/\">([^\n]*?)<\/a><\/td><\/tr>!si";

    # 2 часть целиком
    $pat16="!<tr><td class=\"type\">.*?m_act%5Bcountry%5D\/\d+\/\">(.*?)<\/a><\/td><\/tr>!si";
     
  7. AchiLLeSS

    AchiLLeSS

    Регистр.:
    13 дек 2006
    Сообщения:
    841
    Симпатии:
    415
    не галяк, кусок кода ( и не разбивается в масив
    может проще почистить массив по flags xD


    [1] => Array
    (
    [0] => <img src="/images/flags/flag-3.gif" width="16" height="11" style="border: 1px #fff solid; display: block" alt="США" title="США" />

    [1] => <img src="/images/flags/flag-8.gif" width="16" height="11" style="border: 1px #fff solid; display: block" alt="Франция" title="Франция" />
    [2] => <img src="/images/flags/flag-14.gif" width="16" height="11" style="border: 1px #fff solid; display: block" alt="Италия" title="Италия" />
    [3] => <img src="/images/flags/flag-15.gif" width="16" height="11" style="border: 1px #fff solid; display: block" alt="Испания" title="Испания" />
    [4] => США
    [5] => Франция
    [6] => Италия
    [7] => Испания
    )



     
Статус темы:
Закрыта.