Frage

Ich versuche, ein HTML-Element zu passen, aber ich glaube nicht, seine passende seit $ Titel leer ist - kann mich jemand korrigieren

Meine preg_match:

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

Beispiel HTML übereinstimmen:

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

Bin ich etwas fehlt?

Vielen Dank an Alle für jede Hilfe

War es hilfreich?

Lösung

Es gibt nichts title="Wat" im <a> Schild entsprechen.

würde ich vorschlagen, keine regex obwohl es zu analysieren. Ich bin nicht allzu vertraut mit PHP, aber ich bin sicher, es hat schon etwas, das für Sie die meiste Arbeit tun wird.

Andere Tipps

Wie ich in meinem Kommentar regex sagte ist selten, wenn überhaupt das richtige Werkzeug zu verwenden, wenn zu parsen html versuchen. Im FOING ein Beispiel Zend_Dom_Query zu verwenden, von Th ecomponetns in Zend Framework, nur weil ich es auf eine dieser Fragen noch empfohlen gesehen haben. So ...

$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);
   }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top