php - 读取并加入多个远程文件 PHP
问题描述
我正在使用此代码读取多个远程文件:
$filters = [ "https://example.com/file.txt", "https://example.com/file1.txt", "https://example.com/file3.txt" ]
function parseFilterLists( $filters )
{
foreach( $filters as $filter ){
$file = file_get_contents( $filter );
$parsed = preg_replace( '/!.*/', '', $file );
$parsed = preg_replace( '/\|\|([\w\d]+(?:\.[\w]+)+)(?:[\^\$=~].*)/', '*://*.$1/*', $parsed );
}
$output = array_filter( explode( "\n", $parsed ), function($url){
return preg_match('/^\*:\/\/\*\.[\w\d-]+\.[\w]+\/\*$/', $url);
});
return array_values(array_unique($output));
}
我注意到输出内容被截断,就像只处理一个文件一样,但我需要加入这三个文件来操作它们。我怎样才能做到这一点?
解决方案
我想这会如你所愿
$filters = [
"https://example.com/file.txt", "https://example.com/file1.txt", "https://example.com/file3.txt"
];
function parseFilterLists( $filters )
{
$files = [];
foreach( $filters as $filter ){
$files[] = file_get_contents( $filter );
}
$parsed = preg_replace( '/!.*/', '', implode("\n", $files));
$parsed = preg_replace( '/\|\|([\w\d]+(?:\.[\w]+)+)(?:[\^\$=~].*)/', '*://*.$1/*', $parsed);
$output = array_filter( explode( "\n", $parsed ), function($url){
return preg_match('/^\*:\/\/\*\.[\w\d-]+\.[\w]+\/\*$/', $url);
});
return array_values(array_unique($output));
}
推荐阅读
- php - 在php中同时从数据库发送多封电子邮件
- javascript - 删除数组中所有出现的具有 id 的对象 - JS
- typescript - Make overProp
function interface with one param - android - 为什么我会收到错误 react-native-image-picker : NativeModule.ImagePickerManager is null
- c++ - #ifndef 中的结构变灰,其他源文件无法访问
- r - 消除异常值问题
- reactjs - 如何在类组件中使用 react-redux useSelector?
- python-3.x - 遍历字典列表
- react-native - 如何从功能组件导航到另一个屏幕?
- python - 填充缺失的字段 - 新的未知值