我有一个文本文件: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。非常感谢
答案 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: [";]+