2011-03-10 56 views
0

如何將這些鏈接轉換爲sha1?然後返回到已與SHA1提取所有網址Href php


$dom = new DOMDocument; 
$dom->loadHTML($html); 
$links = $dom->getElementsByTagName('a'); 
foreach ($links as $link) { 
    if (preg_match("/globo.com/i", $link->getAttribute('href'))) { 
     $v = $link->getAttribute('href'); 
     $str = str_replace($v,'http://www.globo.com/?id='.sha1($v),$v); 
     $str2 = str_replace($v,$str,$html); 
     echo $str2."
"; } }
+0

所以你想更新一個新的現有的網址? – 2011-03-10 17:52:14

+0

[PHP preg_match正則表達式問題]的可能重複(http://stackoverflow.com/questions/4286628/php-preg-match-regular-expression-problem) – Gordon 2011-03-10 18:12:45

+1

請注意'preg_match('/ something/i',$文本)'比簡單的'stripos($ text,'something')!== false'慢得多,它在你的情況下工作得很好。 – poke 2011-03-10 18:39:34

回答

0

應用HTML你可以只把href回元素:

$dom = new DOMDocument; 
$dom->loadHTML($html); 
$links = $dom->getElementsByTagName('a'); 

foreach ($links as $link) { 
    $href = $link->getAttribute('href'); 
    if (preg_match("/globo.com/i", $href)) { 
     $newHref = 'http://www.globo.com/?id=' . sha1($v); 
     $link->setAttribute('href', $newHref); 
    } 
} 

,然後導出使用saveHTML()完成的HTML。

echo $dom->saveHTML();