2012-04-03 4 views
1

Ich möchte allen a href Links innerhalb der HTML-String erhalten und alle Links wie folgt konvertieren:Holen Sie sich alle a href Links SimpleHTMLDom Bibliothek & diese auf dem ändern ‚fliegen‘

<a href='www.google.com'>Google</a> 

würde wie folgt aussehen ändern ...

<a href='www.mysite.com/link.php?URL=www.google.com'>Google</a> 

Kann jemand empfehlen, wie ich dies tun?

<?php 

require_once ('simple_html_dom.php');

// load the class 
$html = new simple_html_dom(); 

// load the entire string containing everything user entered here 

$string = "<html><body><base href='http://www.site.biz/clients/g/'><a href='www.google.co.uk'>Google</a><a href='http://www.yahoo.co.uk'>Yahoo</a></body></html>"; 
$return = $html->load($string); 

$links = $html->find('a'); 

foreach ($links as $link) 
{ 
    var_dump($link); 
} 

?>

+1

als Referenz, ich würde empfehlen, insgesamt Dumping simple_html_dom. Es schafft es tatsächlich, PHP segfault hier zu machen, und verschlingt 5x so viel Speicher und läuft mit 1/5 der Geschwindigkeit von PHP eingebauten DOM-Zeug. (Das ist auch nicht übertrieben. Ich habe es durch einige Testsuiten laufen lassen, die ich habe. Wirkliche Weltzeit, keine Benchmarks.: P) – cHao

Antwort

5

Sie etwas versucht haben, wie

$links = $html->find('a'); 

foreach ($links as $link) 
{ 
    if(isset($link->href)) 
    { 
     $link->href = 'www.mysite.com/link.php?URL=' . $link->href; 
    } 
} 

$newHTML = $html->save(); 

// $newHTML now contains the modified HTML 
Verwandte Themen