помогите с регуляркой...

Тема в разделе "Регулярные выражения", создана пользователем funman, 29 ноя 2009.

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

    funman Постоялец

    Регистр.:
    28 дек 2007
    Сообщения:
    146
    Симпатии:
    25
    HTML:
    <span id="lb"><table border='0' width='100%' cellspacing='7' cellpadding='0'><tr valign='top'></tr><tr valign='top'><td colspan='3' align='center' background='/i/l.gif'><img src='/i/spacer.gif' width='1' height='1'></td></tr><tr valign='top'><td width='34%'><table align='left' width='100%' border='0' cellpadding='0' cellspacing='0'><tr valign='top'><td align='center' height='40'  class='title'><img border='0' width='36' src='/i/new.jpg' />&nbsp;<a class='title' href='/products.aspx?pnum=28681'>Тонер-картридж для Kyocera FS-C8008, голубой, 10000 страниц</a></td></tr><tr valign='top'><td align='center'>Артикул: KyoTK-800С<br/><br/></td></tr><tr valign='top'><td align='center' height='150'><a class='title' href='/products.aspx?pnum=28681'><img border='0' width='120' src='/i/ib/KyoTK-800С.jpg' /></a></td></tr></table></td><td width='34%'><table align='left' width='100%' border='0' cellpadding='0' cellspacing='0'><tr valign='top'><td align='center' height='40'  class='title'><img border='0' width='36' src='/i/new.jpg' />&nbsp;<a class='title' href='/products.aspx?pnum=28680'>Тонер-картридж для Kyocera FS-C8008, желтый, 10000 страниц</a></td></tr><tr valign='top'><td align='center'>Артикул: KyoTK-800Y<br/><br/></td></tr><tr valign='top'><td align='center' height='150'><a class='title' href='/products.aspx?pnum=28680'><img border='0' width='120' src='/i/ib/KyoTK-800Y.jpg' /></a></td></tr></table></td><td width='34%'><table align='left' width='100%' border='0' cellpadding='0' cellspacing='0'><tr valign='top'><td align='center' height='40'  class='title'><img border='0' width='36' src='/i/new.jpg' />&nbsp;<a class='title' href='/products.aspx?pnum=28677'>Тонер-картридж для Kyocera FS-C8008, пурпурный, 10000 страниц</a></td></tr><tr valign='top'><td align='center'>Артикул: KyoTK-800M<br/><br/></td></tr><tr valign='top'><td align='center' height='150'><a class='title' href='/products.aspx?pnum=28677'><img border='0' width='120' src='/i/spacer.gif' /></a></td></tr></table></td></tr><tr valign='top'></tr><tr valign='top'><td colspan='3' align='center' background='/i/l.gif'><img src='/i/spacer.gif' width='1' height='1'></td></tr><tr valign='top'><td width='34%'><table align='left' width='100%' border='0' cellpadding='0' cellspacing='0'><tr valign='top'><td align='center' height='40'  class='title'><img border='0' width='36' src='/i/new.jpg' />&nbsp;<a class='title' href='/products.aspx?pnum=28676'>Тонер-картридж для Kyocera FS-C8008, черный, 25000 страниц</a></td></tr><tr valign='top'><td align='center'>Артикул: KyoTK-800K<br/><br/></td></tr><tr valign='top'><td align='center' height='150'><a class='title' href='/products.aspx?pnum=28676'><img border='0' width='120' src='/i/ib/KyoTK-800K.jpg' /></a></td></tr></table></td><td width='34%'><table align='left' width='100%' border='0' cellpadding='0' cellspacing='0'><tr valign='top'><td align='center' height='40'  class='title'><img border='0' width='36' src='/i/new.jpg' />&nbsp;<a class='title' href='/products.aspx?pnum=28662'>Тонер-картридж для Kyocera FS-4020DN, черный, 20000 страниц</a></td></tr><tr valign='top'><td align='center'>Артикул: KyoTK-360<br/><br/></td></tr><tr valign='top'><td align='center' height='150'><a class='title' href='/products.aspx?pnum=28662'><img border='0' width='120' src='/i/ib/KyoTK-360.jpg' /></a></td></tr></table></td><td width='34%'><table align='left' width='100%' border='0' cellpadding='0' cellspacing='0'><tr valign='top'><td align='center' height='40'  class='title'><img border='0' width='36' src='/i/new.jpg' />&nbsp;<a class='title' href='/products.aspx?pnum=28660'>Тонер-картридж для Kyocera FS-3900DN/4000DN, черный, 15000 страниц</a></td></tr><tr valign='top'><td align='center'>Артикул: KyoTK-320<br/><br/></td></tr><tr valign='top'><td align='center' height='150'><a class='title' href='/products.aspx?pnum=28660'><img border='0' width='120' src='/i/ib/KyoTK-320.jpg' /></a></td></tr></table></td></tr><tr valign='top'></table></span>
    
    нужно найти все между
    <td align='center' height='40' class='title'>
    (любые символы)
    </td>
    Не могу понять, или с форматом текста чтото не так (то что он идет сплошной строкой, или не учитываю каких то еще особенностей)
    пробовал так:
    PHP:
    "/(?<=40\'\s\sclass=\'title\'>).*(?=<\/td>)/"
    фильтрует совсем не так...
     
  2. ZCFD

    ZCFD

    Регистр.:
    16 янв 2008
    Сообщения:
    989
    Симпатии:
    437
    PHP:
    preg_match_all('%<td align=\'center\' height=\'40\'  class=\'title\'>(.+?)</td>%s'$text$resultPREG_PATTERN_ORDER);
    // массив всех найденых значений
    $result $result[1];
     
    funman нравится это.
  3. funman

    funman Постоялец

    Регистр.:
    28 дек 2007
    Сообщения:
    146
    Симпатии:
    25
    требовалось именно отобрать в массив то что между... спасибо за помощь. в конечном итоге нужен был шаблон
    %(?<=<td align=\'center\' height=\'40\' class=\'title\'>).+?(?=</td>)%
     
  4. luckydevil13

    luckydevil13 Писатель

    Регистр.:
    28 мар 2008
    Сообщения:
    9
    Симпатии:
    2
    А почему простой вариант не подходит?

    class='title'>(.+?)</td>
     
  5. Ponochka

    Ponochka Постоялец

    Регистр.:
    21 фев 2008
    Сообщения:
    128
    Симпатии:
    13
    потому что height='40' только.
     
  6. farm

    farm

    Регистр.:
    8 июн 2006
    Сообщения:
    537
    Симпатии:
    106
    Чтобы не плодить тем, спрошу тут:
    Есть код
    PHP:
    $file_src "./dat/papka/5/ad423sd.jpg"
     
    тут нужна регулярка которая бы убирала точку перед /dat
    После 
    /dat может идти различный путь подобного типа.
     
    $content "<img src=\"".$file_src."\" >";
     
  7. AGONOM

    AGONOM Создатель

    Регистр.:
    17 апр 2009
    Сообщения:
    10
    Симпатии:
    3
    PHP:
    $file_src "./dat/papka/5/ad423sd.jpg"
    // $file_src = str_replace('./dat', '/dat', $file_src); 
    $file_src preg_replace("/^\.\/dat/""/dat"$file_src);
    $content "<img src=\"".$file_src."\" >";  
     
    farm нравится это.
  8. oleg3d

    oleg3d Создатель

    Регистр.:
    11 дек 2009
    Сообщения:
    34
    Симпатии:
    2
    Модификатор жадности /.../U не забудьте.
    А то в массиве будет только один элемент.
     
  9. ADyDyka

    ADyDyka Создатель

    Регистр.:
    19 янв 2010
    Сообщения:
    26
    Симпатии:
    5
    И первый и второй вариант не учитывают того, а вдруг расширение файла будет .dat, тогда вы его тоже вырежете :)
    Всего лишь требуется убрать слева точку если она есть :
    $file_src = ltrim($file_src, '.');
     
  10. RolCom

    RolCom

    Регистр.:
    12 мар 2008
    Сообщения:
    351
    Симпатии:
    108
    Прежде чем написать, сначала подумал бы. Оба варианта не вырежут ни чего, если расширение файла .dat
     
Статус темы:
Закрыта.