Pergunta

Eu estou tentando corresponder a um elemento html, mas eu não acho que a sua correspondência desde $ títulos está vazia -? Alguém pode me corrigir

Meu preg_match:

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

Exemplo HTML ao jogo:

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

Estou faltando alguma coisa?

Obrigado a todos por qualquer ajuda

Foi útil?

Solução

Não há nada para corresponder title="Wat" na tag <a>.

Eu sugiro não usar um regex para analisá-lo embora. Eu não estou muito familiarizado com PHP, mas tenho certeza de que já tem algo que vai fazer a maior parte do trabalho para você.

Outras dicas

Como eu disse no meu comentário regex é raramente se sempre a ferramenta adequada para usar quando se tenta analisar HTML. Im Foing usar um exemplo de Zend_Dom_Query, um dos th ecomponetns em Zend Framework, simplesmente porque eu não vi ele recomendado em uma dessas perguntas ainda. Então ...

$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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top