Сообщение от рони
|
если ТС сможет выцепить изменения
|
Да не проблема
//данные таблицы
$table = [
['aaaa aaaa aaaa', 'bbb bbb bbb', 'ccc ccc ccc'],
['aaaa aaaa <b></b> aaaa <strong></strong>', 'bbb bbb bbb', 'ccc ccc <b></b> ccc'],
['aaaa <em></em> aaaa aaaa', '<b></b> bbb bbb bbb', 'ccc ccc ccc']
];
//редактируемые данные, только их изменяем/сохраняем
$data = [
1=>[['AAAAA', 'BBBBB'], 2=>['CCCCC']],
2=>[['DDDDD'], ['EEEEE']]
];
//если вывод для редактирования, то форма
$edit = 1;
//вывод таблицы
$tbl = '<table border=1><tr>' . implode('</tr><tr>', array_map(function($k, $v) use($data, $edit) {
if($data[$k]) {
foreach($data[$k] as $n=>$d) {
preg_match_all("/(<[^>]+>)(<\/[^>]+>)/U", $v[$n], $a);
foreach($a[0] as $j=>$m) $v[$n] = preg_replace("#$m#", $a[1][$j] .
($edit ? '<input name="data['.$k.']['.$n.']" value="'.htmlspecialchars($d[$j]).'">' : $d[$j]) .
$a[2][$j], $v[$n], 1);
}
}
return '<td>' . implode('</td><td>', $v) . '</td>';
}, array_keys($table), $table)) . '</tr></table>';
echo $tbl;