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

Yura

Новичок
Помогите с регуляркой

Есть такой кусок html:
<td width='1%' align='center' valign='top'><a name='g1804'></a><b>01804</b></td>
Таких строк много. Вместо "01804" в каждой строке могут стоять любые цифры или буквы (от 1 до 7) либо знак "-". Мне нужно вытащить из этих ячеек все эти значения и в зависимости от того, какое это будет значение, сделать необходимую замену. Проблема в следующем: если стоят цифры или буквы, то все нормально, а вот со знаком "-" проблемка. Скрипт его пропускает и сразу начинает читать следующую строку. Дело в том, что после ячейки в приведенной строке есть еще ячейка. Ее содержимое читается без проблем (оно тоже нужно), но если в этой ячейке стоит "-", то содержимое следующей ячейки пропускается.
 

Yura

Новичок
"~(&lt;td width='1%' align='center' valign='top'&gt;)(.*)(&lt;/td&gt;)(.*)(class='ml'&gt;)(.*)(&lt;/a&gt;&lt;/td&gt;)~Uims";
 

Фанат

oncle terrible
Команда форума
ты хочешь сказать, что регулярка со всеми этими &gt; хоть что-то выбирает в приведенном примере текста?
 

Yura

Новичок
А мне все они и не нужны. Мне нужно только все, что в первой и второй скобках (.*). Выбирает все отлично,если только не стоит "-". Проверил около 2 тыс. записей.
Ну а при выводе инфы - html_entity_decode()
 

MajestiC

Пых
Может попробовать что-нибудь типа "#<td width='1%' align='center' valign='top'><a name='[^']*'></a><b>([0-9]+|-)</b></td>#Ui"
 

Yura

Новичок
Автор оригинала: Фанат
ты либо шутишь, либо бредишь
Я сначала пишу:
$file = htmlentities($file);
$file = file_get_contents ($filename);

Далее: регулярка $s= и т.д.

Далее:
if (preg_match_all($s, $file, $out, PREG_SET_ORDER))
{
.......
}
 

Фанат

oncle terrible
Команда форума
да уж.
видя, как ты даже здесь умудрился перепутать две строчки местами, я уже ничему не удивляюсь...
 

Yura

Новичок
Автор оригинала: Фанат
да уж.
видя, как ты даже здесь умудрился перепутать две строчки местами, я уже ничему не удивляюсь...
Ну да, это я здесь в форуме не правильно вставил. А в скрипте у меня нормально. Я же не буду весь код вставлять - он слишком большой, да и никому он не нужен. Я вставил только строчки кода, нужные для решеняи данной задачи
 

Anarki

Новичок
PHP:
#<td\swidth='1%'\salign='center'\svalign='top'><a\sname='[^>]+></a><b>([a-zA-Z0-9-]{1,7})</b></td>#
-~{}~ 12.05.07 00:11:

оранжевый цвет :)
 
Сверху