2015-05-02 61 views
0

我有一個數組$all_urls。只是如果我做print_r($all_urls);,它將返回以下數據:從數組中提取數據,只以「http」開頭

Array (
[0] => http://www.domain.com 
[1] => https://www.domain.com 
[2] => http://www.domain.com/my-account/ 
[3] => https://www.facebook.com/ 
[4] => /test 
[5] => http://domain.com/wp-content/uploads/logos-5.jpg 
[6] => 'http://domain.com/wp-content/themes/' 
[7] => '//mattressandmore.com/wp-content/plugins' 
) 

我想提取並列出包含的項目「// HTTP」。

+0

嘗試首先編碼的東西,foreach是一個開始 – Ghost

+0

以'http://'開頭還是'http://'?即應該元素6在你的數組匹配? –

+0

@pala_ correct,它應該是一個匹配 – user3436467

回答

0

嘗試使用array_walk功能如下:

array_walk($all_urls, function(function(&$value, $index){ 
    if (preg_match('/^http/', $value)) { 
     echo $index . " " . $value . "\n"; 
    } 
}); 

您也可以只在陣列迭代用foreach:

foreach($all_urls as $index => $value) { 
    if (preg_match('/^http/', $value)) { 
     echo $index . " " . $value . "\n"; 
    } 
} 
+0

非常感謝。第二種解決方案效果很好,但它確實返回了一些https://而我只想要http:// ..我只是將preg_match更新爲''/^http:/''並且它完全正常工作 – user3436467

+0

最後,如果不匹配發現,如何回聲「現在匹配找到」? – user3436467

+0

@ user3436467從'^ http'中刪除'^'以將其更改爲匹配字符串中的任意位置 –

1

使用此代碼僅過濾與http和返回開始值一個新的陣列:

array_filter($arr, function ($var) { 
    return stripos($var, 'http', -strlen($var)) !== FALSE; 
});