2016-02-13 204 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; } 
}