2012-04-05 8 views
0

Ich habe eine HTML-Seite mit follwing LinksExtrahierung spezifische Links PHP von HTML-Seite

<a class="out" href="www.a.com/hgfgtsdfdffsdfsdf">sdfsssdfddf</a> 
<a href="www.a.com/hgfgt">dsfdsf</a> 
<a class="menu" href="www.a.com/hgfgt">menu1</a> 
<a class="menu" href="www.a.com/hgfgdfg">menu2</a> 
<a class="menu" href="www.a.com/hgfgdfg">menu3</a> 
<a href="www.a.com/hgfgtssdfdfsdf">sdfsdfddf</a> 
<a href="www.a.com/hgfgtsdfsfsdfdf">sdfsdfsddf</a> 
<a href="www.a.com/hgfgtsdfsdfsdf">sdfsdfddf</a> 
<a class="out" href="www.a.com/hgfgtsdfsdfsdf">sdfsdfddf</a> 

Ich möchte über die Links und deren Titel der Klasse „Menü“ extrahieren, um ein Array mit PHP, bitte helft mir .

+0

möglich Duplikat [Extrahieren von spezifischen Verbindungen mit PHP preg_match_all] (http://stackoverflow.com/questions/10010503/ extracting-specific-links-using-php-preg-match-all) – mario

Antwort

0
$str = '<a class="out" href="www.a.com/hgfgtsdfdffsdfsdf">sdfsssdfddf</a> 
<a href="www.a.com/hgfgt">dsfdsf</a> 
<a class="menu" href="www.a.com/hgfgt">menu1</a> 
<a class="menu" href="www.a.com/hgfgdfg">menu2</a> 
<a class="menu" href="www.a.com/hgfgdfg">menu3</a> 
<a href="www.a.com/hgfgtssdfdfsdf">sdfsdfddf</a> 
<a href="www.a.com/hgfgtsdfsfsdfdf">sdfsdfsddf</a> 
<a href="www.a.com/hgfgtsdfsdfsdf">sdfsdfddf</a> 
<a class="out" href="www.a.com/hgfgtsdfsdfsdf">sdfsdfddf</a>'; 

preg_match_all('#<a class="menu" href="([^"]+)">([^<]+)#', $str, $m); 

var_dump($m[1], $m[2]); 
0
preg_match_all('#<a class="menu" href="([^"]+)">([^<]+)</a>#', $content, $matches); 
0

Hier ist, wie es mit DOMDocument und XPath zu tun:

$html = ' 

<a class="out" href="www.a.com/hgfgtsdfdffsdfsdf">sdfsssdfddf</a> 
<a href="www.a.com/hgfgt">dsfdsf</a> 
<a class="menu" href="www.a.com/hgfgt">menu1</a> 
<a class="menu" href="www.a.com/hgfgdfg">menu2</a> 
<a class="menu" href="www.a.com/hgfgdfg">menu3</a> 
<a href="www.a.com/hgfgtssdfdfsdf">sdfsdfddf</a> 
<a href="www.a.com/hgfgtsdfsfsdfdf">sdfsdfsddf</a> 
<a href="www.a.com/hgfgtsdfsdfsdf">sdfsdfddf</a> 
<a class="out" href="www.a.com/hgfgtsdfsdfsdf">sdfsdfddf</a> 

'; 

$classname = 'menu'; // class to find 

$doc = new DOMDocument(); 
$doc->loadHTML($html); 

$xpath = new DOMXPath($doc); 

$result = $xpath->query("//*[contains(@class, '$classname')]"); 

foreach($result as $elem) 
{ 
    echo "title: " . $elem->nodeValue . "<br />"; 
    echo "link: " . $elem->getAttribute('href') . "<br />"; 
} 
+0

zeigt Fehler: Warnung: DOMDocument :: loadHTML() [domdocument.loadhtml]: Tag nobr in Entity ungültig, Zeile: 385 in C: \ xampp \ htdocs \ curl \ l.php in Zeile 20 Warnung: DOMDocument :: lo adHTML() [domdocument.loadhtml]: htmlParseEntityRef: erwartet ';' in Entität, Zeile: 385 in C: \ xampp \ htdocs \ curl \ l.php in Zeile 20 Warnung: DOMDocument :: loadHTML() [domdocument.loadhtml]: htmlParseEntityRef: erwartet ';' in Entity, Zeile: 385 in C: \ xampp \ htdocs \ curl \ l.php Zeile 20 –

+0

DOMDocument ist wählerisch über HTML. In diesem Fall können Sie die Warnung mit dem @ -Zeichen für den Aufruf von loadHTML() unterdrücken, zB: '@ $ doc-> loadHTML ($ html);' – MrCode