在txt内容中查找ip内容php

时间:2011-05-03 03:25:50

标签: php ip

我有一个文本文件:ban.txt有内容

a:5:{i:14528;s:15:" 118.71.102.176";i:6048;s:15:" 113.22.109.137";i:16731;s:3:"  118.71.102.76";i:2269;s:12:" 1.52.251.63";i:9050;s:14:"123.21.100.174";}

我写了一个脚本来查找和禁止此txt中的IP

<?php
$banlist = file("ban.txt");

foreach($banlist as $ips ) {

    if($_SERVER["REMOTE_ADDR"] == $ips) {
        die("Your IP is banned!");
    }
}
?>

可以帮我列出这个内容的IP,我是一个新手php。非常感谢

1 个答案:

答案 0 :(得分:2)

看看这是一个基于不明确问题的公认的垃圾解决方案

正则表达式似乎永远不是一个很好的解决方案,但我没有关于文件一致性的详细信息。

1。隔离ban.txt中的“s”段

因此,我的正则表达式并不是很棒,但是这个正则表达式应该与看似用于IP禁令的“s”段相匹配(尽管你的评论声明“IP总是在”ip“”这一点混淆了)

Regex: s:[0-9]+:"[ ]*[0-9]+.[0-9]+.[0-9]+.[0-9]+";

2。隔离每个“s”段内的IP

一旦我们有了这些段,我们就可以将起始位剥离到实际IP(即将s:123:"192.168.0.0";转换为192.168.0.0";),然后修剪结束引号和分号(即{ {1}}到192.168.0.0";):

192.168.0.0

3。示例代码

这会给我们这个PHP代码:

Regex for start junk (still need to trim end): s:[0-9]+:"[ ]*
Regex for end junk: [";]+

示例:http://codepad.viper-7.com/S9rTQe