我创建了一个脚本,它创建了一个从页面中抓取的url数组,我想只过滤掉1个特定url的数组。 该阵列目前看起来像这样:
Array
(
[0] => index.jsp
[1] => feedback.jsp
[2] => faq.jsp
[3] => donate.jsp
[4] => contact.jsp
[5] => widgetmaker.jsp
[11] => http://www.example.com/myaccount/accountactivation?_mska_tok=tON-3yIN1n5TVrFAXT3Q&_tgt_url=http%3A%2F%2Fanothersite.com%2Fxml.php
[12] => http://www.example.com/myaccount/accountactivation?_mska_tok=tON-3yIN1n5TVrFAXT3Q&_tgt_url=http%3A%2F%2Fanothersite.com%2Fxml.php
[13] => http://www.example.com/myaccount/accountactivation?_mska_tok=tON-3yIN1n5TVrFAXT3Q&_tgt_url=http%3A%2F%2Fanothersite.com%2Fxml.php
[14] => http://www.example.com/myaccount/accountactivation?_mska_tok=tON-3yIN1n5TVrFAXT3Q&_tgt_url=http%3A%2F%2Fanothersite.com%2Fxml.php
[15] => http://www.example.com/myaccount/accountactivation?_mska_tok=tON-3yIN1n5TVrFAXT3Q&_tgt_url=http%3A%2F%2Fanothersite.com%2Fxml.php
)
我想要它做的是抓住其中一个“http://www.example.com/myaccount/accountactivation?_mska_tok=tON-3yIN1n5TVrFAXT3Q&_tgt_url=http%3A%2F%2Fanothersite.com%2Fxml。 php“链接。我该怎么做?
答案 0 :(得分:2)
如果我理解正确,您只想获得完全限定(绝对)的网址:
$filtered = array_filter($urls, function($url) {
if (strpos($url, 'http://') === 0) return true;
return false;
});
如果您同时需要http
和https
网址:
$filtered = array_filter($urls, function($url) {
if (preg_match('#^https?://#', $url)) return true;
return false;
});
如果您只想要完全匹配:
$filtered = array_filter($urls, function($url) {
if ($url == 'http://full/url/goes/here') return true;
return false;
});
如果您只想获得第一个:
$url = $filtered[0];
答案 1 :(得分:0)
我认为理想会优化脚本以捕获一个链接。您知道应该是最终URL的标准吗?
理想情况下,恕我直言,使用regular expression,或者,如果可能的话,使用strpos查找特定字符串,效率更高。
答案 2 :(得分:0)
如果我理解正确,您要么获取网址 - 如果它存在于数组中 - 或者NULL
。这个PHP代码可以做到这一点:
function get_url_if_present($wanted, $array) {
return array_keys($array, $wanted) ? $wanted : NULL;
}
...其中$wanted
是您在$array
中搜索的网址,返回值是带有找到的网址的字符串(如果它存在于数组中),否则{{1 }}
您可以这样调用此函数:
NULL