为了账号安全,请及时绑定邮箱和手机立即绑定

用于查找具有属性但顺序唯一的标签的正则表达式

用于查找具有属性但顺序唯一的标签的正则表达式

PHP
开心每一天1111 2021-08-28 17:27:35
我试图从 html 和 idk 中找到日期和交易,如何使用正则表达式获取 html。我尝试了简单的 html 我发现它更难实现。我想要做的是找到交易日期并将其放入数组中,然后以一种很好的格式打印出来。我试图从这个 html 的表格中获取某些值。日期的 html 是 (div style="width:100%;overflow:hidden;") 和 transctions 都是 (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);我用过这个,只有交易出来了。还知道如何打印出某个交易的日期。
查看完整描述

1 回答

?
子衿沉夜

TA贡献1828条经验 获得超3个赞

我的猜测是,在这里您可能需要类似于以下内容的表达式:


<\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>

"

  }

}

分享


查看完整回答
反对 回复 2021-08-28
  • 1 回答
  • 0 关注
  • 131 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号