Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 比较用户IP与.txt文件内容_Php - Fatal编程技术网

Php 比较用户IP与.txt文件内容

Php 比较用户IP与.txt文件内容,php,Php,我有一个.txt文件,其中包含大约100.000个IP(黑名单),我想检查当前用户IP是否存在于该.txt文件中,如果是,脚本执行应该停止 不使用.htaccess最有效的方法是什么 $file = file_get_contents( "your_text_file.txt" ); if( preg_match( "/$ip/", $file ) ) { // block } 如果要使用preg_match进行阻止,可能需要将换行符添加到搜索字符串中并转义句点字符,因为否则它们将匹配任何

我有一个.txt文件,其中包含大约100.000个IP(黑名单),我想检查当前用户IP是否存在于该.txt文件中,如果是,脚本执行应该停止

不使用.htaccess最有效的方法是什么

$file = file_get_contents( "your_text_file.txt" );
if( preg_match( "/$ip/", $file ) ) {
  // block
}

如果要使用preg_match进行阻止,可能需要将换行符添加到搜索字符串中并转义句点字符,因为否则它们将匹配任何单个字符(尽管不太可能,但这可能会阻止普通用户)。Htaccess更适合于此查询,甚至是数据库查询。

我认为存储数据的方式将帮助您更快地查找。保持数据的排序格式,然后尝试进行二进制搜索,这样可以帮助您更快地搜索内容。我只是建议理论部分:)

请发布您已经尝试过的代码。可能重复的可能重复的可能重复的我没有使用。htaccess您使用的是数据库吗?这也将在几乎相同的IP上匹配,还是?我的意思是,如果我在禁止列表中有127.0.0.12,并且我的IP是127.0.0.1,它也会被阻止?如果每个IP地址都在一个新行上,在搜索字符串的末尾添加\n,例如“/127\.0\.0\.12\n/”你可以使用stru replace来替换“\”字符。谢谢,同时我发现:
if(preg\u匹配(“\b{$IP}\b}\b},$file)”