Reguläre Ausdrücke - in bestimmten divs suchen

Sturmrider

Erfahrenes Mitglied
Guten Abend :)

Gibt es eine Möglichkeit mit einem regulären Ausdruck innerhalb eines DIVs z.B. Links zu suchen? Das Problem was sich dabei stellt ist, zu erkennen wo das richtige Div geschlossen wird, da sich im besagten Div, in welchem man sucht noch weitere kleinere Divs befinden.

Und wo ich schon einmal diesen Thread geöffnet habe:
Kann mir jemand eine Seite empfehlen, auf der einmal ordentlich und sehr ausführlich (evtl. auch mit Beispielen) alle Operatoren erklärt werden, die man mit reguläre Ausdrücken in PHP verwenden kann?
Es gibt zwar viele Seiten darüber, jedoch zum wirklichen lernen sind die, die ich bisher ergoogelt habe nicht wirklich zu gebrauchen, da sie entweder zu ungenau, falsch oder unvollständig sind. Außerdem sind nur selten Beispiele zur Veranschaulichung dabei.
 
Das ist mit regulären Ausdrücken allein nicht machbar, weil damit nicht das „Gleiche Anzahl öffnender und schließender Tags“ ausgedrückt werden kann.
Du kannst sie aber verwenden, um die Zeichenkette in Tag oder Text zu zerlegen und dann die öffnenden und schließenden Tags zählen.
 
Naja, da kann ich auch gleich die ganze Seite parsen... :rolleyes:
Aber wenn das mit regulären Ausdrücken nicht zu machen ist, gibt es denn nicht vielleicht eine Funktion in PHP, die den schließenden Tag automatisch findet?
Ich frage einfach mal nach. Schließlich ist PHP in den neuen Versionen auch ganz gut mit XML Parsen dabei.
Falls es das nicht gibt, werde ich mir wirklich so eine kleine funktion schreiben, wie du vorgeschlagen hast :) Frage dafür schon einmal: gibt es eine PHP-Funktion mit der ich nur die Anzahl der Treffer eines regulären Ausdrucks erhalte?
 
Könnte DomDocument + XPath dir helfen?

Ungefähr so:
PHP:
$file = "test.html";
$doc = new DOMDocument();
$doc->loadHTMLFile($file);

$xpath = new DOMXpath($doc);
$elements = $xpath->query("//div/a"); // keine ahnung obs stimmt, bin kein xPath Experte

if (!is_null($elements)) {
  foreach ($elements as $element) {
    echo "<br/>[". $element->nodeName. "]";

    $nodes = $element->childNodes;
    foreach ($nodes as $node) {
      echo $node->nodeValue. "\n";
    }
  }
}
(Code aus PHP Manual , XPath Expression angepasst, muss nicht stimmen)
 
Zurück