Задать вопрос
@Bestolkovy

Почему не срабатывает функция PHP?

Добрый день!

Необходимо обработать ячейки у каждой таблице на странице. Написал функцию:

1. Перебираем все таблицы на странице с помощью preg_replace_callback;
2. В каждой таблице ищем ячейки и внутри них меняем одни данные на другие.

$content = preg_replace_callback(

  "/\<table[^\>]*?\>[\s\S]*?\<\/table\>/miu",

  function( $matches ) {

    return preg_replace_callback(

      "/\(\<th[^\>]*?\>|\<td[^\>]*?\>)(?:\r?\n)?([\s\S]*?)(?:\r?\n)?(\<\/\\1\>)/miu",

      function( $foo ) {
        preg_replace( "/Меняемое./miu", "Поменянное.", $foo[2] );
      },

      $matches[0]

    );

  },

  $content

);


Ну, почему не работает-то? Ведь всё правильно?
  • Вопрос задан
  • 156 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
@pu5her
CFEEE7E4F0E0E2EBFFFED8E0F0E8EAF2FBE1E0EBE1E5F13A29
Лучше делать это через DOM

$dom = new DOMDocument;
$dom->loadHTML($html);
$tables = $dom->getElementsByTagName('table');
 
foreach ($tables as $table) {
    // меняем что хотим 
}
Ответ написан
Комментировать
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
А вы уверены, что на странице тэги <th> и <td> закрыты через </th> и </td>? Стандарт HTML этого не требует, поскольку браузеры закрывают такие тэги автоматически.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы