如何从html源中查找URL中的关键字,但将链接和锚文本存储在数组中

时间:2012-07-20 12:02:05

标签: php htmldoc

有点坚持这个, 我要做的是循环一个URL列表,其中包含链接回我的网站, 我希望捕获用于生成链接的HTML代码,并存储用作链接的锚文本,

[marty删除的代码见下文]

所以用于martylinks的代码使用的函数我仍然试图建立,这是我有点麻烦,但对你们来说,我确定它真的很简单..

这是我的find_marty_links函数

function find_marty_links($file, $keyword){
    //1: Find link to my site <a href="http://www.***martin***-gardner.co.uk" target="_blank" title="Web Developer">Web Developer</a>
    //2: copy the FULL HTML LINK to array
    //3: copy the REL value? NOFOLLOW : FOLLOW to array
    //4  copy TITLE (if any) to array
    //5  copy Anchor Text to array

    $htmlDoc = new DomDocument();
    $htmlDoc->loadhtml($file);

    $output_array = array();
    foreach($htmlDoc->getElementsByTagName('a') as $link) {

            // STEP 1
        // SEARCH ENTIRE PAGE FOR KEYWORD?
            // FIND A LINK WITH MY KEYWORD?
            preg_match_all('???', $link, $output); //???//

            if(strpos($output) == $keyword){


               // STEP 2
               // COPY THE FULL HTML FOR THAT LINK?
               $full_html_link = preg_match(??);
               $output_array['link_html'] = $full_html_link;

               // STEP 3
               // COPY THE REL VALUE TO ARRAY
               $link_rel = $link->getAttribute('rel');
               $output_array['link_rel'] = $link_rel;

               // STEP 4
               // COPY TITLE TO ARRAY
               $link_title = $link->getAttribute('title');
               $output_array['link_title'] = $link_title;

               // STEP 5
               // COPY ANCHOR TEXT TO ARRAY
               $anchor_exp = expode('>'); //???
               $anchor_txt = $anchor_exp[2];//??
               $output_array['link_anchor'] = $anchor_txt;

            }

    }
}

!! UPDATE !! 需要生成如下所示的数组

$results = array('link_html' => '<a title="test" href="http://site.com" rel="nofollow">anchor text</a>',
                 'link_rel' => 'nofollow',
                 'link_title' => 'test',
                 'link_anchor' => 'anchor text'
                 )

感谢任何帮助小伙伴......

中号

1 个答案:

答案 0 :(得分:1)

好的,这是更新的代码:

function find_marty_links($file, $keyword){
    $htmlDoc = new DomDocument();
    $htmlDoc->loadhtml($file);
    $links = array();

    foreach($htmlDoc->getElementsByTagName('a') as $link) {
        $url = $link->getAttribute('href');
        $title = $link->getAttribute('title');
        $text = $link->nodeValue;
        $rel = $link->getAttribute('rel');

        if(strpos($url,$keyword) !== false || strpos($title,$keyword) !== false || strpos($text,$keyword) !== false)
        {
            $links[] = array('url' => $url, 'text' => $text, 'title' => $title, 'rel' => $rel);
        }
    }

    return $links;
}