2011-01-16 6 views
7

Ho una stringa di HTML che vorrei controllare per vedere se ci sono dei collegamenti al suo interno e, in tal caso, estrarli e inserirli in un array. Posso farlo in jQuery con la semplicità dei suoi selettori, ma non riesco a trovare i giusti metodi da utilizzare in PHP.Manipolazione stringa PHP: Estrai hrefs

Ad esempio, la stringa può apparire come segue:

<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> 

Come (in PHP) posso trasformarlo in un array che sembra qualcosa di simile:

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

Grazie, Ian

+0

Possibile duplicato [Afferrando l'attributo href di un elemento A] (http://stackoverflow.com/questions/3820666/grabbing-the-href-attribute-of-an-a-element) – j08691

risposta

17

È possibile utilizzare Libreria PHP DOMDocument per analizzare XML e/o HTML. Qualcosa come il seguente dovrebbe fare il trucco, per ottenere l'attributo href da una stringa di HTML.

$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

La tua domanda è difficile da comprendere ma credo che tu voglia un PHP Parser DOM, puoi trovare un semplice pars pars qui: http://simplehtmldom.sourceforge.net/ e un piccolo esempio di utilizzo e è:

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

è possibile utilizzare jQuery, allora si dovrebbe essere in grado di utilizzare questo non è un problema come il suo sistema di selezione è la stessa di jQuery cosí come CSS, come jQuery deriva da CSS

-1

se il formato è sempre lo stesso, u può probabilmente risolvere il problema con una combinazione di esplodere e strip_tags qualcosa come

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


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