【问题标题】:Parsing only specific values from an array?仅解析数组中的特定值?
【发布时间】:2011-09-21 19:12:45
【问题描述】:

我正在使用 Xpath 解析一些信息,它返回给我一个简单的数组。

$values = array();

Array
(
    [0] => http://www.aaa.com/19364328526/
    [1] => http://www.bbb.com/207341152011/
    [2] => http://www.ccc.co.jp/1246623/
)

有什么方法可以解析数组并仅根据 URL 加权获取某些 URL?例如。如果 aaa.com 存在,则只取 aaa.com。如果没有,请检查 ccc.co.jp,如果存在,则仅使用它,等等。

当我知道 $values[0]/[1]/etc 中的内容时,我才知道如何从数组中进行选择,不幸的是,此数组中的链接顺序有时会发生变化和/或不存在。

任何帮助将不胜感激!

谢谢! 特雷

【问题讨论】:

    标签: php arrays


    【解决方案1】:

    您可以使用in_array() 来检查值是否存在。我不确切知道您要做什么,但这是一个示例。你知道你可能得到的所有可能的值吗?

    //List domains in priority order    
    $weighted = array('aaa.com','bbb.com','ccc.com');
    
    $selected_url = '';
    foreach($weighted as $check) { //start with highest priority
        foreach($values as $url) { //loop through all URL's
            if(strpos($url,$check) !== false) {
                //If a url matches priority, return it. We are finished to exit both loops
                $selected_url = $url;
                break 2;
            }
        }
    }
    

    $selected_url 应该具有最高优先级的 URL,否则如果没有找到任何 url,它将为空。

    【讨论】:

    • 我将遍历几个这样的数组列表,我只想去掉权重最高的 URL,然后将其放入一个数组中,该数组将在最后吐出。我会看看这个。谢谢
    • 你如何定义你的 URL 的权重?这可能会有所作为
    • 我还没有尝试过,所以这个问题。我基本上想知道是否有办法按顺序扫描数组。检查 aaa.com,如果它在那里抓取完整的数组条目 aaa.com/xyz 等。如果它不在那里,检查 ccc.co.jp,如果它在那里抓取完整的数组条目等。
    • 哦,好吧,让我为你编辑我的答案。我想到了一个更好的主意。
    • 此方法允许您通过简单地将高优先级检查放在首位来定义自己的权重。对于您的示例,您可以使用上述foreach 和preg_match 来匹配感兴趣的域。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-05
    • 1970-01-01
    • 1970-01-01
    • 2019-06-07
    • 2021-04-04
    • 1970-01-01
    相关资源
    最近更新 更多