2010-07-01 3 views
1

мой проект коллажа ударил последние два дня У меня есть код для извлечения ссылок, но мне также нужен ярлык ссылок. Мне нужны ссылки для хранения в массиве и метке ссылки, которые будут храниться в другом массиве. например, если на сайте bbc.com есть код для спорта, мне нужно $ linklabel [0] = sports и $ link [0] = bbc.com/sports.html.php curl, link label extract

код ниже, но ошибка происходит неисправимая ошибка: Вызов неопределенной метод DOMXPath :: найти() в C: \ WAMP \ WWW \ тест \ d.php на линии 14

] *>?. * @ си '); // Разбиваем javascript $ var = preg_replace ($ search, "\ n", html_entity_decode ($ var)); // Вырезать javascript $ linklabel = array(); $ link = array(); $ dom = новый DOMDocument ($ var); @ $ dom-> loadHTML ($ var); $ = новый XPath DOMXPath ($ дом); // Захватите DOM узлы Еогеасп ($ xpath-> найти ('а'), как $ элемента) { array_push ($ LinkLabel, $ element-> InnerText); print $ linklabel; array_push ($ link, $ element-> href); print $ link. '
'; } функция fread_url ($ URL) { , если (function_exists ("curl_init")) {$ ч = curl_init(); $ user_agent = "Mozilla/4.0 (совместимо; MSIE 5.01;". "Windows NT 5.0" "; $ ch = curl_init(); curl_setopt ($ ch, CURLOPT_USERAGENT, $ user_agent); curl_setopt ($ ch, CURLOPT_HTTPGET, 1); curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt ($ ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt ($ ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt ($ ch, CURLOPT_URL, $ url); curl_setopt ($ ch, CURLOPT_COOKIEJAR, 'cookie.txt'); $ html = curl_exec ($ ch); // печать $ html; // печать веб-страницы. curl_close ($ ch); } else { $ hfile = fopen ($ url, "r"); if ($ hfile) { while (! Feof ($ hfile)) { $ html. = Fgets ($ hfile, 1024); } } } return $ html; } ?>
+0

Удалено с просьбой связаться с вами через E-Mail - ради вас самих, чтобы предотвратить понижение. :) –

+0

@Pekka, спасибо за редактирование, я собирался сделать это сам! –

ответ

1

Это легко с помощью Simple HTML DOM.

$html = file_get_html('http://www.google.com/'); 

$linklabel = array(); 
$link = array(); 

foreach($html->find('a') as $element) 
    { 
    array_push($linklabel, $element->innerText); 
    array_push($link, $element->href); 
    } 
+0

+1 за то, что вам действительно нужна репутация. и это правильный ответ: D But -> label не даст текст гиперссылки, он вернет атрибут метки .... –

+0

@Byron вы правы, спасибо, исправлены! – Unicron

+0

Что такое $ element здесь.Я получаю и ошибка для функции find ('a'). если бы вы могли немного объяснить, это будет с помощью gr8 –

0

Вы пришли в нужное место. Удалите свою электронную почту, так как это общий ресурс сообщества, а не ваш персональный Q/A-механизм.

Вы должны использовать simple_html_dom, чтобы разобрать ссылки. Тогда это становится таким же простым, как

$dom = file_get_html('http://www.google.com/'); 

// get the label of all links. see the docs for searching options 
foreach ($dom->find('a') as $links) 
{ 
    $link->innerText; 
    $link->href; 
}