Domanda

Sto cercando di abbinare un elemento HTML, ma non credo che il suo corrispondente da $ titoli è vuota -? Qualcuno mi può correggere

Il mio preg_match:

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

Esempio HTML per abbinare:

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

Mi sto perdendo qualcosa?

Grazie a tutti per tutto l'aiuto

È stato utile?

Soluzione

Non c'è niente da corrispondere title="Wat" nel tag <a>.

Io suggerirei di non usare una regex per analizzare, però. Io non sono troppo familiarità con PHP, ma sono sicuro che ha già qualcosa che farà la maggior parte del lavoro per voi.

Altri suggerimenti

Come ho detto nel mio commento regex è raramente, se mai lo strumento ideale per utilizzare quando si cerca di analizzare HTML. Im Foing utilizzare un esempio di Zend_Dom_Query, uno dei ecomponetns th in Zend Framework, semplicemente perché i havent visto consigliato su una di queste domande ancora. Quindi ...

$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);
   }
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top