2016-02-13 201 views
1

我已经仔细研究了这一点,并知道我将使用模数,但有点卡住了。我有一组链接,像这样:循环中的PHP迭代

Link 1 

Link 2 

Link 3 

Link 4 

Link 5 

GAP

Link 1 

Link 2 

Link 3 

Link 4 

Link 5 

这种情况持续了很长时间。我想从每一点中提取链接2,但不能真正做到这一点。到目前为止,我得到了:

$counter = 0; 
foreach ($items as $item) { 
    $counter++; 
    if ($counter % 6 == 2) { continue; } 
    } 

任何帮助是非常欢迎的!

+0

是否循环逢隙后重新开始,或者是连续的? –

+0

整个过程都是一样的! – roo

+0

你想提取第二个项目或“链接2”? – chris85

回答

0

这不是一个确切回答你的问题,但你在评论指定您的阵列的来源是一个HTML页面,所以...

当我们处理一个HTML/XML字符串时,最好的方法是使用解析器的有史以来,因为通过它我们可以有更多的灵活性和更正确的结果。

看到这个代码:

$data = file_get_contents('http://www.scotcourts.gov.uk/current-business/court-rolls/sheriff-court') or q('ouch'); 

$dom = new DOMDocument(); 

libxml_use_internal_errors(True); 
$dom->loadHTML($data); 
libxml_use_internal_errors(False); 

$xpath = new DOMXPath($dom); 

$result = array(); 
$query = '//div[@id="T60AE9CAF007_Col00"]/div/ul'; 
foreach($xpath->query($query) as $row) 
{ 
    $li = $xpath->query('./li/div/a', $row); 
    $result[] = $li->item(1)->getAttribute('href'); 
} 

PhpFiddle demo

通过这种方式,可以获取所有链接忽视的差距和技巧

我已添加libxml_use_internal_errors(True)以避免发生html错误警告。
与主$query,我检索所有<ul>节点在<div id="T60AE9CAF007_Col00">(注意,我不知道如果此ID如果永久的主题的变化,取代如果具有最佳属性),然后我处理每个节点搜索所有<li>孩子并且我添加到每个第二个孩子的href属性。

我觉得代码如果是自我解释的,但如果你有疑问,随时提问。


+0

嘿,那完美!谢谢!愚蠢的问题,但我怎么最好从数组中提取每个网址,因为没有适当的密钥? – roo

+0

对不起,但我不明白 – fusion3k

+0

对不起,这是个不好的问题!我已经设法抓住所有的网址,正如我想要的那样。非常感谢你的帮助! – roo

0

如果我正确理解你..你有一个大型数组与所有链接?

$items = array(
"link1", 
"link2", 
"link3", 
"link4", 
"link5", 
"gap", 
"link2_1", 
"link2_2", 
"link2_3", 
"link2_4", 
"link2_5", 
"gap2" 
etc.. 
); 

我想这样的事情会的工作:

$counter = 0; 
foreach ($items as $item) { 
$counter++; 
//When counter is 2.. do something.. (1 or 2, can't remember, a while since i worked with php) 
if ($counter == 2) { continue; } 
//when gap is reached, reset counter, (5 or 6, can't remember..) 
if ($counter == 6) { $counter = 0; } 
}