我试图从日志文件中提取ip地址,我得到一个空数组。
代码:
$file = file('log.txt');
$ips = implode($fixed);
$pattern2 = "/[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/";
preg_match_all($pattern2, $ips, $m);
print_r($m[0]);
示例
$ips='http://localhost/articles/ Mozilla/5.0 (Windows NT 6.3; WOW64; rv:42.0) Gecko/20100101 Firefox/42.0 /articles/ 2-9-2016 17:55 24.100.248.111';
我在http://tryphpregex.com/测试了模式,它只用上面的字符串突出显示了ip地址。
也可以preg_match_all接受数组中的值吗?我没有在php文档中看到任何关于它的内容。
我只是把所有的过滤逻辑都拿出来并且脚本正常工作,显然文件中的过滤器摆脱了所有的线条。 腮红。 $ ips的输出是
Array
(
[15] => Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.73 Safari/537.36 OPR/34.0.2044.98679 / 172.56.35.178
[16] => http://localhost/ Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.73 Safari/537.36 OPR/34.0.2044.98679 /articles/automate-it-all/ 172.56.35.178
答案 0 :(得分:1)
您的代码:
$file = file('log.txt');
$ips = implode($fixed);
应该是:
$file = file('log.txt');
$ips = implode($file);
// ^^^^