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

Статус
В этой теме нельзя размещать новые ответы.

funman

Знаток
Регистрация
28 Дек 2007
Сообщения
163
Реакции
26
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>)/"
фильтрует совсем не так...
 
PHP:
preg_match_all('%<td align=\'center\' height=\'40\'  class=\'title\'>(.+?)</td>%s', $text, $result, PREG_PATTERN_ORDER);
// массив всех найденых значений
$result = $result[1];
 
PHP:
preg_match_all('%<td align=\'center\' height=\'40\'  class=\'title\'>(.+?)</td>%s', $text, $result, PREG_PATTERN_ORDER);
// массив всех найденых значений
$result = $result[1];

требовалось именно отобрать в массив то что между... спасибо за помощь. в конечном итоге нужен был шаблон
%(?<=<td align=\'center\' height=\'40\' class=\'title\'>).+?(?=</td>)%
 
А почему простой вариант не подходит?

class='title'>(.+?)</td>
 
Чтобы не плодить тем, спрошу тут:
Есть код
PHP:
$file_src = "./dat/papka/5/ad423sd.jpg"
 
тут нужна регулярка которая бы убирала точку перед /dat
После /dat может идти различный путь подобного типа.
 
$content = "<img src=\"".$file_src."\" >";
 
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
Модификатор жадности /.../U не забудьте.
А то в массиве будет только один элемент.
 
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."\" >";
И первый и второй вариант не учитывают того, а вдруг расширение файла будет .dat, тогда вы его тоже вырежете :)
Всего лишь требуется убрать слева точку если она есть :
$file_src = ltrim($file_src, '.');
 
Прежде чем написать, сначала подумал бы. Оба варианта не вырежут ни чего, если расширение файла .dat
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху