Показать сообщение отдельно
  #23 (permalink)  
Старый 09.09.2015, 02:03
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от рони
если ТС сможет выцепить изменения
Да не проблема

//данные таблицы
$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;
Ответить с цитированием