2016-04-19 1 views
0

Это весь мой кодsimple_html_dom - читать HTML-страницы, два массива

// include the scrapper 
include('simple_html_dom.php'); 

// connect the page for scrapping 
$html = file_get_html('http://www.niagarafallsreview.ca/news/local'); 

// make empty arrays 
$headlines = array(); 
$links = array(); 

// look for 'h' headings on page 
foreach($html->find('h1') as $header) { 
    $headlines[] = $header->plaintext; 
} 

// look for 'a' links that start with 'http://www.niagarafallsreview.ca/2016/04/' 
foreach($html->find('a[href^="http://www.niagarafallsreview.ca/2016/04/"]') as $link) { 
    $links[] = $link->href; 
} 

// trim the headlines because one on top and bottom were not needed 
$output = array_slice($headlines, 1, -1); 

// for each header output a nice list of the headers 
foreach ($output as $headers){ 
    echo "< a href='#'>$headers</a>" . "<br />"; 
} 

// make sure the links are unique and no doubles are found 
$result = array_unique($links); 

// for each link output it in a nice list 
foreach ($result as $linkk){ 
    echo "<a href='$linkk'>$linkk</a>" . "<br />"; 
} 

этот код будет производить заголовки в хорошем списке, а также будет производить хороший список ссылок.

Моя проблема заключается в том, что мне нужно, чтобы объединить их, я хотел бы, $ заголовок будет текст HREF, а ссылка в HREF быть $ linkk

как это ..

< a href ='$linkk'>$headers</a> 

Я не знаю, как это сделать, поскольку у меня есть два заявления foreach. Я попытался объединить их, но я не увенчался успехом.

Любая помощь будет принята с благодарностью.

Спасибо.

+0

может быть, вы показать исходный HTML? Почему вы думаете, что массивы имеют одинаковую длину и соответствуют друг другу? – splash58

+0

источник - подключенная страница 5-й линии вниз. Если я выхожу из массивов самостоятельно, они правильно проиндексированы – Logical380

+0

не могли бы вы решить проблему? Помогли ли наши ответы? – TehSphinX

ответ

0

Вот Еогеасп вы ищете:

foreach($output as $i=>$headers) { 
    $linkk = $result[$i]; 

    echo "< a href='$linkk'>$headers</a>" . "<br />"; 
} 

Это предполагает, что массивы имеют одинаковую длину, а также правильный порядок.

0

Попробуйте это:

// include the scrapper 
include('simple_html_dom.php'); 

// connect the page for scrapping 
$html = file_get_html('http://www.niagarafallsreview.ca/news/local'); 

// make empty arrays 
$headlines = array(); 
$links = array(); 

// look for 'h' headings on page 
foreach($html->find('h1') as $header) { 
    $headlines[] = $header->plaintext; 
} 

// look for 'a' links that start with 'http://www.niagarafallsreview.ca/2016/04/' 
foreach($html->find('a[href^="http://www.niagarafallsreview.ca/2016/04/"]') as $link) { 
    $links[] = $link->href; 
} 

// trim the headlines because one on top and bottom were not needed 
$output = array_slice($headlines, 1, -1); 

// make sure the links are unique and no doubles are found 
$result = array_unique($links); 

// for each link output it in a nice list 
foreach ($result as $i=>$linkk) { 
    $headline = isset($output[$i]) ? $output[$i] : '(empty)'; 
    echo "<a href='$linkk'>$headline</a>" . "<br />"; 
} 
Смежные вопросы