2011-03-10 3 views
0

Comment convertir ces liens en sha1? puis revenir à l'html déjà appliqué avec SHA1Extraire toutes les URLs 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

Vous essayez donc de mettre à jour une URL existante avec une nouvelle URL? –

+0

duplication possible de [problème d'expression régulière PHP preg_match] (http://stackoverflow.com/questions/4286628/php-preg-match-regular-expression-problem) – Gordon

+1

Notez que 'preg_match ('/ something/i', $ text) 'est beaucoup plus lent qu'un simple' stripos ($ text, 'something')! == false', qui fonctionne parfaitement dans votre situation. – poke

Répondre

0

Vous pouvez simplement mettre le href de nouveau dans l'élément:

$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); 
    } 
} 

Et puis exporter le code HTML fini à l'aide saveHTML().

echo $dom->saveHTML(); 
Questions connexes