Регулярное выражение для поиска тегов с атрибутами, но в уникальном порядке

Я пытаюсь найти дату и транзакцию из html и узнать, как получить html с регулярным выражением. Я пробовал простой html, мне было сложнее его реализовать. Что я пытаюсь сделать, так это найти дату с транзакциями и поместить ее в массив, а затем распечатать в удобном формате. Я пытаюсь получить определенные значения из таблицы из этого html. HTML-код даты (div style="width:100%;overflow:hidden;") и все транзакции (td align="right"). Вот html (https://pastebin.com/L8emba2X)

Я просто возился с множеством разных версий регулярных выражений, и ни одна из них, похоже, не работает из-за одной даты, но 4 других транзакций, которые нужно тянуть за дату.

$text='/<\s*div style = "width:100%;overflow:hidden;"[^>]*>(.*?)</div[^>]>| 
<td align = "right">(.+?)</td>/m';

preg_match_all($text, $html, $matches, PREG_SET_ORDER, 0);

print_r($matches);

Я использовал это, и вышли только транзакции. Также не знаю, как распечатать дату с определенной транзакцией.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
2 129
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я предполагаю, что здесь вам может понадобиться выражение, похожее на:

<\s*div style = "width:100%;overflow:hidden;"\s*>([\s\S]*?)</div>|<td align = "right">(.+?)</td>

для захвата любых символов и новых строк с помощью ([\s\S]*?).

Ваша попытка просто прекрасна, однако (.*?) не передаст символы новой строки, а это:

([\s\S]*?)
([\d\D]*?)
([\w\W]*?)

Демо

Тестовое задание

$re = '/<\s*div style = "width:100%;overflow:hidden;"\s*>([\s\S]*?)</div>|<td align = "right">(.+?)</td>/m';
$str = '<td align = "left"><div style = "width:100%;overflow:hidden;">
    2019.06.04 09:35
</div></td><td>5176</td><td align = "right">0.00</td><td align = "right">0.00</td><td align = "right">5,000.00</td><td align = "right">5,000.00</td><td>орлого</td><td>                 </td>
</tr><tr>
<td align = "left"><div style = "width:100%;overflow:hidden;">
    2019.06.04 09:35
</div></td><td>5024</td><td align = "right">5,000.00</td><td align = "right">-50.00</td><td align = "right">0.00</td><td align = "right">4,950.00</td><td>Ухаалаг мэдээ үйлчилгээний хураамж</td><td>                 </td>
</tr><tr>
<td align = "left"><div style = "width:100%;overflow:hidden;">
    2019.06.14 11:00
        </tbody>
    </table>
</div>';

preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);

// Print the entire match result
var_dump($matches);

Выход

array(11) {
  [0]=>
  array(2) {
    [0]=>
    string(69) "<div style = "width:100%;overflow:hidden;">
    2019.06.04 09:35
</div>"
    [1]=>
    string(22) "
    2019.06.04 09:35
"
  }
  [1]=>
  array(3) {
    [0]=>
    string(27) "<td align = "right">0.00</td>"
    [1]=>
    string(0) ""
    [2]=>
    string(4) "0.00"
  }
  [2]=>
  array(3) {
    [0]=>
    string(27) "<td align = "right">0.00</td>"
    [1]=>
    string(0) ""
    [2]=>
    string(4) "0.00"
  }
  [3]=>
  array(3) {
    [0]=>
    string(31) "<td align = "right">5,000.00</td>"
    [1]=>
    string(0) ""
    [2]=>
    string(8) "5,000.00"
  }
  [4]=>
  array(3) {
    [0]=>
    string(31) "<td align = "right">5,000.00</td>"
    [1]=>
    string(0) ""
    [2]=>
    string(8) "5,000.00"
  }
  [5]=>
  array(2) {
    [0]=>
    string(69) "<div style = "width:100%;overflow:hidden;">
    2019.06.04 09:35
</div>"
    [1]=>
    string(22) "
    2019.06.04 09:35
"
  }
  [6]=>
  array(3) {
    [0]=>
    string(31) "<td align = "right">5,000.00</td>"
    [1]=>
    string(0) ""
    [2]=>
    string(8) "5,000.00"
  }
  [7]=>
  array(3) {
    [0]=>
    string(29) "<td align = "right">-50.00</td>"
    [1]=>
    string(0) ""
    [2]=>
    string(6) "-50.00"
  }
  [8]=>
  array(3) {
    [0]=>
    string(27) "<td align = "right">0.00</td>"
    [1]=>
    string(0) ""
    [2]=>
    string(4) "0.00"
  }
  [9]=>
  array(3) {
    [0]=>
    string(31) "<td align = "right">4,950.00</td>"
    [1]=>
    string(0) ""
    [2]=>
    string(8) "4,950.00"
  }
  [10]=>
  array(2) {
    [0]=>
    string(99) "<div style = "width:100%;overflow:hidden;">
    2019.06.14 11:00
        </tbody>
    </table>
</div>"
    [1]=>
    string(52) "
    2019.06.14 11:00
        </tbody>
    </table>
"
  }
}

Честно говоря, я не могу поверить, как сильно вы помогли мне с этим. Спасибо, постараюсь реализовать прямо сейчас. Я ужасен с регулярным выражением.

Desmond 20.06.2019 06:07

Другие вопросы по теме