Задать вопрос
@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

);


Ну, почему не работает-то? Ведь всё правильно?
  • Вопрос задан
  • 157 просмотров
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 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 этого не требует, поскольку браузеры закрывают такие тэги автоматически.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽