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