Я пытаюсь найти дату и транзакцию из 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);
Я использовал это, и вышли только транзакции. Также не знаю, как распечатать дату с определенной транзакцией.






Я предполагаю, что здесь вам может понадобиться выражение, похожее на:
<\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>
"
}
}
Честно говоря, я не могу поверить, как сильно вы помогли мне с этим. Спасибо, постараюсь реализовать прямо сейчас. Я ужасен с регулярным выражением.