PHP代码脚本:怎样使用正则表达式提取文本或日志数据?
使用正则表达式读取数据是一种事半功倍的数据爬取和分析方式,如果我们对weblog日志进行分析,需要提取某些站点的日志,那么就可以借助于正则表达式,逐行扫描,然后提取符合条件的日志。也可以逐行扫描后,将日志分析分解为字段,然后录入数据库。下面是一个使用正则表达式读取文本数据的php代码实例:
public function parseLog() { $log_file = Http::getLog(); if (!is_file($log_file )) { $this->log("$log_file file not fond"); return; } $items = file($log_file , FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); if (!is_array($items)) { $this->log("get $log_file content fail"); return; } foreach ($items as $content) { if (preg_match("/\s*(\S+)\s+(\S.+)/", $content, $match)) { $time = $match[1]; $requestvars= $match[2]; $requests= explode(' ', substr($requestvars, 0, -1)); foreach ($requests as $request) { self::$mapVars[$request] = $time; } } } }