2011-01-16 19 views
7

Tengo una cadena de HTML que me gustaría verificar para ver si hay algún enlace dentro de ella y, de ser así, extraerlas y ponerlas en una matriz. Puedo hacer esto en jQuery con la simplicidad de sus selectores pero no puedo encontrar los métodos correctos para usar en PHP.PHP Manipulación de cadenas: extraer hrefs

Por ejemplo, la cadena puede tener este aspecto:

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

Cómo (en PHP) puedo convertirlo en una matriz que se ve algo como:

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

Gracias, Ian

+0

duplicado posible de [Agarrando el atributo href de un elemento A] (http://stackoverflow.com/questions/3820666/grabbing-the-href-attribute-of-an-a-element) – j08691

Respuesta

17

Se puede utilizar Biblioteca de PHP DOMDocument para analizar XML y/o HTML. Algo como lo siguiente debería hacer el truco, para obtener el atributo href de una cadena de 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

Su pregunta es difícil de entender, pero creo que usted quiere un analizador PHP DOM, puede encontrar un analizador simple de dom aquí: http://simplehtmldom.sourceforge.net/ y un pequeño ejemplo de uso e es:

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

puede utilizar jQuery, entonces debería ser capaz de utilizar este problema ya que su sistema de selección es el mismo que jQuery aswell como CSS, como jQuery deriva de CSS

-1

si el formato es siempre el mismo, u probablemente puede ordenar a cabo con una combinación de explotar y strip_tags algo así como

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


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