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

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

a_smith

Гуру форума
Регистрация
4 Дек 2008
Сообщения
261
Реакции
54
Есть текстовая переменная с HTML текстом:
<table>
<tr>
<td>190090</td>
<td>9997927</td>
<td>8jud%90rke99<td>
<td></td>
</tr>
<tr>
<td>190091</td>
<td>9992343</td>
<td>43lkj8dfgl409k<td>
<td></td>
</tr>
...
</table>

Необходимо составить регулярку, которая брала значение из первой TD соответвенно 190090 и в пустую ячейку <td></td> вставляла <input type=checkbox name=check[190090]> по всему тексту
Т.е. на выходе должно получится:
<table>
<tr>
<td>190090</td>
<td>9997927</td>
<td>8jud%90rke99<td>
<td><input type=checkbox name=check[190090]>Отметить</input></td>
</tr>
<tr>
<td>190091</td>
<td>9992343</td>
<td>43lkj8dfgl409k<td>
<td><input type=checkbox name=check[190091]>Отметить</input></td>
</tr>
...
</table>

Спасибо заранее. Я перечитал тут много но как-то с циклом путаюсь в регулярках...
 
PHP:
<?php
$text = "
<table>
<tr>
<td>190090</td>
<td>9997927</td>
<td>8jud%90rke99</td>
<td></td>
</tr>
<tr>
<td>190091</td>
<td>9992343</td>
<td>43lkj8dfgl409k</td>
<td></td>
</tr>
</table>";
preg_match_all("`<td>(.*?)</td>`is", $text, $match);
print("<table>");
for($i = 0, $cnt = count($match[1]);$i != $cnt;$i++) {
	print "<tr>\r\n";
	print "<td>" . $match[1][$i] . "</td>\r\n";
	$i++;
	print "<td>" . $match[1][$i] . "</td>\r\n";
	$i++;
	print "<td>" . $match[1][$i] . "</td>\r\n";
	$i++;
	print "<td><input type=checkbox name=check[" . $match[1][$i-3] . "]>Отметить</input></td>\r\n";
	print "</tr>\r\n";
} 
print "</table>";
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху