我想从一个日志文件中提取出IP地址,并得到一个空数组。preg_match_all正在输出一个空数组
代码:
$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的文档。
我只是采取了所有的过滤逻辑和脚本的作品,显然文件中的过滤器摆脱线条摆脱了所有的线。 blush。的$ 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
当我测试了它在该网站上您的正则表达式不起作用。但它使用单个'\'而不是'\\'。你测试过了吗? – Tekay37
或者您可以使用单引号''〜[0-9] {1,3} \。[0-9] {1,3} \。[0-9] {1,3} \。[0- 9] {1,3}〜''双重转义应该用双引号解析为单个转义。如果没有,那将是一个问题。 – sln
其实当我试图把代码放入stackoverflow.com它是预览没有反斜杠,我试过它与单个转义字符 – Lid