【发布时间】:2013-06-12 20:48:33
【问题描述】:
我根据他们的“年龄”(过去两天)收集了一些文件,现在我需要按照正则表达式模式从它们中提取文本(在这种情况下,该模式就像微软产品密钥) ,这是我到目前为止所做的:
<?php
$files = iterator_to_array(
new GlobIterator('/var/www/log/access.log.*', GlobIterator::CURRENT_AS_PATHNAME) );
foreach ($files as $file) {
$filelastmodified = filemtime($file);
if((time()-$filelastmodified) < 48*3600 && is_file($file))
{
$regexp = '/^[A-Z1-9]{5}(-[A-Z1-9]{5}){4}$/';
preg_match_all($regexp, file($file), $keys, PREG_PATTERN_ORDER);
}
}
print_r($keys, true);
?>
但我收到一个错误:
PHP 警告:preg_match_all() 期望参数 2 为字符串、数组 在第 11 行的 /var/www/log/keys.php 中给出
我做错了什么? 另外,我想知道是否可以唯一地保存那些匹配的文本字符串,这意味着如果一个键出现两次,我只需要将它保存一次到数组中。 提前致谢
【问题讨论】:
-
PHP.net file manual
array file ( string $filename [, int $flags = 0 [, resource $context ]] )返回数组。由于期望参数 2 为字符串,这是不对的。 -
错误信息告诉你到底哪里出了问题。你没看吗?
标签: php preg-match-all