2011-01-16 12 views
7

Ich habe eine Zeichenfolge von HTML, die ich überprüfen möchten, ob es Links gibt, und wenn ja, extrahieren Sie sie und legen Sie sie in ein Array. Ich kann dies in jQuery mit der Einfachheit seiner Selektoren tun, aber ich kann nicht die richtigen Methoden finden, um in PHP zu verwenden.PHP-String-Manipulation: Extrahieren hrefs

Zum Beispiel kann die Zeichenfolge wie folgt aussehen:

<h1>Doctors</h1> 
<a title="C - G" href="linkl.html">C - G</a> 
<a title="G - K" href="link2.html">G - K</a> 
<a title="K - M" href="link3.html">K - M</a> 

Wie (in PHP) kann ich es in ein Array drehen, dass etwas wie folgt aussieht:

[1]=>"link1.html" 
[2]=>"link2.html" 
[3]=>"link3.html" 

Danke, Ian

+0

Mögliches Duplikat [A Element das Attributs href einen Grabbing] (http://stackoverflow.com/questions/3820666/grabbing-the-href-attribute-of-a-a-element) – j08691

Antwort

17

Sie verwenden PHPs DOMDocument Bibliothek zum Parsen von XML und/oder HTML. Etwas wie das folgende sollte den Trick machen, das href Attribut von einer Schnur von HTML zu erhalten.

$html = '<h1>Doctors</h1> 
<a title="C - G" href="linkl.html">C - G</a> 
<a title="G - K" href="link2.html">G - K</a> 
<a title="K - M" href="link3.html">K - M</a>'; 

$hrefs = array(); 

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

$tags = $dom->getElementsByTagName('a'); 
foreach ($tags as $tag) { 
     $hrefs[] = $tag->getAttribute('href'); 
} 
1

Ihre Frage ist schwierig zu verstehen, aber ich glaube, dass Sie einen PHP-DOM-Parser wollen, finden Sie hier einfach dom-Parser: http://simplehtmldom.sourceforge.net/ und ein kleines Anwendungsbeispiel e:

$array = array(); 
foreach($html->find('a') as $a) 
{ 
    $array[] = $a->href; 
} 

Sie Sie jQuery verwenden können, dann sollten Sie diese kein Problem als Auswahlsystem verwenden, um das gleiche wie jQuery wie CSS aswell, wie jQuery von

CSS leitet
-1

, wenn das Format immer das gleiche ist, u es wahrscheinlich sortieren können explodieren mit einer Kombination aus und strip_tags so etwas wie

$html="<span class="field-content"><a href="http://url_to_extract">whatever</a></span>" 


$href=end(explode('"',strip_tags($html)));