XML 来自 HTTP header 响应的有效上次编辑时间

XML valid last edit time from HTTP header response

美好的一天!

我正在尝试使用 PHP 生成站点地图。 我想优化我的代码,因此我想知道是否有一种方法可以通过分析文件的 header 来确定上次修改文件的时间(我知道它 returns last-modified 但是时间格式很奇怪,并且此信息在 $http_response_header 数组中的位置可能会改变)。我需要这样的东西:

$html = file_get_contents($file, $context);
magicFunction($http_response_header); //returns last modified date in dd-mm-yyyy format

有什么想法吗?我在 Whosebug 上找到了一些解决方案,但它们都暗示了额外的功能,如 filemtime 或 gmtime,我不需要手头已经有 header 响应。

您可以为此使用 preg_grep and preg_replace

$pattern = '/^Last-Modified: (.+)$/';
$found = array_values( preg_grep( $pattern, $http_response_header ) );

$dateString = preg_replace( $pattern, '', $found[0] );
$lastModified = date( 'Y-m-d H:i:s', strtotime( $dateString ) );

eval.in demo

使用 preg_grep(使用正则表达式模式过滤数组)您得到所需的 header,然后使用 array_values 确保所需的 header 在 [0 ] 键,然后使用 preg_replace 删除 'Last-Modified' 部分并将其转换为有效的日期时间字符串。最后,如果你愿意,你可以把它格式化成你喜欢的格式。