【问题标题】:PHP Array in looping function循环函数中的PHP数组
【发布时间】:2013-11-26 01:16:35
【问题描述】:

我有 php 函数从某个页面获取项目,该项目有分页

function get_content($link){
    $string = file_get_contents($link);
    $regex = '/https?\:\/\/[^\" ]+/i';
    preg_match_all($regex, $string, $matches);

    //this is important
    foreach($matches as $final){
        $newarray[] = $final;
    }

    if(strpos($string,'Next Page')){ //asumme the pagination is http://someserver.com/content.php?page=2
        get_content($link);
    }

    return $newarray;
} 

问题:

  1. 这种情况可以使用循环函数吗?

  2. 当我尝试时,为什么我只得到一页数组?我的意思是,如果有 5 个页面并且每个页面有 50 个链接,那么当我尝试打印结果时,我只会得到 50 个链接,而不是 250 个。

谢谢

【问题讨论】:

  • 你为什么使用正则表达式来解析这个而不是$_GET?使用起来要容易得多。
  • 对不起伙计,我忘记了,我创建的功能是从页面中提取链接,页面有分页。假设页面有 5 页,所以我只获取 5 次内容并将所有 URL 保存在“$newarray”数组中。谢谢

标签: php regex arrays function loops


【解决方案1】:

您永远不会将递归值设置到您正在构建的主数组中。而且您根本不会更改 $link 来更改您从中获取数据的文件。

您需要执行以下操作:

if(strpos($result,'Next Page')){ //asumme the pagination is http://someserver.com/content.php?page=2
    $sub_array = get_content($link . '?page=x'); // you need some pagination identifier probably
    $newarray = array_merge($new_array, $sub_array);
}

【讨论】:

  • 谢谢,我找到了答案,我只需要 array_merge 函数 @Mike :是的,我从原始页面获取的分页,因为他们使用一些“键”来识别page ex : someserver.com/content.php?page=2&key=789234697d if(strpos($result,'Next Page')) 这只是一个示例过滤器,用于知道下一页是否可用,如果可用,它将处理另一个代码以获取“下一个 url” .感谢 Mike 和 Machavity 的快速响应。真的很感激。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多