0

我通过使用 cURL 得到响应 $str。$str 是 html 格式,总包含 327 行。我想从最初的第 127 行获取日期

<b>Last Updated On:</b>17-Dec-2011 11:33:41 UTC<br><br>

为了尝试减少 $str 使用的内存,在 cURl 之后,我确实这样做了

$str = strip_tags($str);

然后,要获取完整的行,

preg_match("/^Last Updated On......................./m", $str, $line);

$lastupdate = $line[0];

然后,要删除多余的文本,

$lastupdate = str_replace("上次更新时间:", "", $lastupdate);

现在我认为这个 preg_match 语句不是最有效的。它使用了太多的点,必须有类似的东西

LookFor = 最后更新时间:

如果您看到 LookFor,请获取接下来的 25 个字符。

我使用正确的 preg_match 语法吗?目前它正在工作,并给了我想要的结果,但我不知道它是如何工作的。

请向我推荐这条预赛线的正确/有效等价物。

另外,我怎样才能告诉 PHP 直接跳转到第 127 行,而不是遍历所有前 126 行。所有以 [CR][LF] 结尾的行。

附言

  • 我只需要接下来的 25 个字符。
  • 我需要的线路永远是第 127 行
  • 我将检索到的日期用作一串文本;没有计算,只存储在 .csv 文件中。但是,如果不是文本,我可以以正确的日期格式获取它,那真的会很高兴。现在它只是一串文本。
4

1 回答 1

3

尝试这个 :

<?php

    // get the lines in an array
    $lines = explode("\n",$str);

    // get the 127th line
    $line = $lines[126];

    // get the date
    preg_match('/<\/b>(.+)<br><br>/', $line, $matches);

    $date = $matches[1];

    echo $date;

?>

输出 :

17-Dec-2011 11:33:41 UTC
于 2012-04-14T13:45:37.923 回答