Найти в блоке HTML кода таблицу и заменить ее

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

askarbin

Профессор
Регистрация
31 Мар 2009
Сообщения
292
Реакции
36
Подскажите пожалуйста. Ситуация такая:
Есть переменная с большим количеством символов, в которой по заданию может находится табличка с определенным id.
Например:
HTML:
<table id = "someid">
...
</table>
Задача:
Вытащить полностью табличку из переменной
от <table id = "someid"> и до </table>
И провести в ней замены при помощи регулярки.
С заменой все ясно, но вот как мне получить эту табличку (занести в переменную), чтобы ее обработать функцией, а потом вставить обратно в общую переменную в то же самое место?
 
Вот:
Код:
<?php
$html = '
text before
<table id = "someid">
test test test
</table>
text after
';

$mycontent = 'mycontent';
$someid = 'someid';
$matches = array();
$html = preg_replace( '#<table id = "' . $someid . '">([\n\r\w\W.]*?)</table>#Ui',  '<table id = "' . $someid . '">'. $mycontent .'</table>', $html); 


echo $html;
 
Вы помогли мне выделить часть с таблицей и заменить ее на произвольную, а мне нужно сделать так, чтобы я над выделенной частью провел операции и потом записал ее обратно.
Это возможно сделать?
 
добавьте в начале preg_match с той же регуляркой, этим достается таблица, потом реплейсом уже добавляется
 
Сделал так:
PHP:
<?php
$html = '
text before
<table id = "someid">
test test test
</table>
text after
';
$someid = 'someid'; 
preg_match( '#<table id = "' . $someid . '">([\n\r\w\W.]*?)</table>#Ui', $html, $matches); 
$html = preg_replace( '#<table id = "' . $someid . '">([\n\r\w\W.]*?)</table>#Ui',  '<table id = "' . $someid . '">'. $matches .'</table>', $html); 
echo $html;
?>

Вместо test test test получил 1. Что я неверно делаю?
 
А может тогда было проще через strpos и substr решать?

PHP:
$code = preg_replace('#<table id = "'.$someid.'">(.*?)</table>#Umsi', '<table id = "'.$someid.'">\\1</table>', $html);
так правильней составлять (это как пример)
 
А может тогда было проще через strpos и substr решать?
PHP:
$code = preg_replace('#<table id = "'.$someid.'">(.*?)</table>#Umsi', '<table id = "'.$someid.'">\\1</table>', $html);
так правильней составлять (это как пример)

Да, спасибо, все поехало, регуляркой воспользовался вашей, никаких глюков не обнаружил
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху