Pregunta

Estoy tratando de coincidir con un elemento html, pero no creo que su juego desde $ títulos está vacía -? Alguien me puede corregir

Mi preg_match:

   preg_match_all("~<td align=\"left\" width=\"50%\">[^<]*. <b><a href=\"(.*?)\">[^<]*</a>~i", $main, $titles);

Ejemplo HTML al partido:

//<td align="left" width="50%">1. <b><a title="Wat" href="http://www.exmple.com/q.html">Wat</a></b><br></td>

Me estoy perdiendo algo?

Todo gracias por cualquier ayuda

¿Fue útil?

Solución

No hay nada que coincida con title="Wat" en la etiqueta <a>.

Te sugiero no utilizar una expresión regular para analizar sin embargo. No estoy muy familiarizado con PHP, pero estoy seguro de que ya tiene algo que va a hacer la mayor parte del trabajo por usted.

Otros consejos

Como dije en mi comentario de expresiones regulares es rara vez o nunca la herramienta adecuada para utilizar cuando se trata de analizar HTML. Im Foing a utilizar un ejemplo de Zend_Dom_Query, uno de th ecomponetns en Zend Framework, simplemente porque no he visto recomendado en una de estas preguntas todavía. Así que ...

$dom = new Zend_Dom_Query($htmlHaystack);
$anchors = $dom->query('//td/a[@title]'); // xpath here
if(count($anchors) > 0)
{
  $titles = array();
  foreach($anchors as $element)
  {
     $titles[] = $element->getAttribute('title');
  }
}
else
{
  $title = null;
}
$string='<td align="left" width="50%">1. <b><a title="Wat" href="http://www.exmple.com/q.html">Wat</a></b><br></td>';
$s = explode("</a>",$string);
foreach($s as $k){
   if (strpos($k,"href")!==FALSE){
        echo preg_replace('/.*href="|">.*/ms',"",$k);
   }
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top