preg_match_all正在输出一个空白数组

时间:2016-02-15 01:17:50

标签: php arrays regex

我试图从日志文件中提取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 

1 个答案:

答案 0 :(得分:1)

您的代码:

$file = file('log.txt');
$ips = implode($fixed);

应该是:

$file = file('log.txt');
$ips = implode($file);
//              ^^^^