(PECL pecl_http >= 0.1.0)
http_match_etag — Match ETag
Matches the given ETag against the clients If-Match resp. If-None-Match HTTP headers.
the ETag to match
if set to TRUE, the header usually used to validate HTTP ranges will be checked
Returns TRUE if ETag matches or the header contained the asterisk ("*"), else FALSE.
Regarding the 20071101 note of "root at mantoru dot de":
That solution got me started but didn't quite work for me. Apache (at least 2.x) applies an algorithm to the Last-Modified time. A solution that worked perfectly for me is at http://us3.php.net/manual/en/function.fileinode.php#78264.
Richard
An Apache-like ETag can be generated like this:
<?php
function etag($filename, $quote = true) {
if (!file_exists($filename) || !($info = stat($filename))) {
return false;
}
$q = ($quote) ? '"' : '';
return sprintf("$q%x-%x-%x$q", $info['ino'], $info['size'], $info['mtime']);
}
?>