PHP 5.4 & MySQL 5.6 Grundkurs

Inhalt von Absätzen auslesen

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Dieses Video demonstriert, wie Sie einen regulären Ausdruck aufbauen, der die Inhalte von HTML-Absätzen ausliest. Nicht ganz so einfach, deshalb geht's langsam, Schritt für Schritt.

Transkript

Weil Sie PHP zur Erstellung von Webseiten benutzen, haben Sie es oft mit HTML Code zu tun, den Sie bearbeiten. Beispielsweise könnte es sein, dass Sie den Inhalt von Absätzen auslesen möchten. Eine einfache Aufgabe, was meinen Sie? Sehen Sie sich die Lösung an und entscheiden Sie selbst. Also folgendes, wir wollen den Inhalt von Absätzen auslesen. Dafür muss man wissen Absätze stehen in HTML zwischen <p-Tag und </p-Tag, und es können in Absätzen natürlich auch Klassenangaben sein. Überlegen wir mal wie man jetzt so einen regulären Ausdruck schreiben könnte. Erst einmal brauchen wir Begrenzer. Da könnte man den "/" nehmen, aber da der Slash auch in HTML vorkommt, ist es günstiger einen anderen Begrenzer zu nehmen, und zwar ein Zeichen, was im Code wahrscheinlich nicht vorkommt. Ich habe mich jetzt hier für das "@"-Zeichen entschieden. Dann suche ich nach Absätzen. Also mein Ausdruck beginnt schon mal mit spitze Klammer auf, "p", danach kann etwas kommen, was genau das ist, weiss ich nicht, weil es kann ja irgendwelche Attribute sein. Und da macht man regulären Ausdrücken etwas besonderes. Man definiert dann oft Zeichen, die zumindest nicht vorkommen können. Im Beispiel hier sage ich mit diesem Ausdruck in eckigen Klammern, was nach dem <p kommt, ist zumindest einmal nicht eine spitze schließende Klammer. Und von diesen Sachen kann es null bis unendlich viele geben. Und dann kommt die spitze Klammer. Damit habe ich jetzt ein Starttag definiert. Dann kann in dem Absatz ja beliebig was drinnen stehen. Das gebe ich an über den Punkt unter Sternchen, und dann wird der Absatz beendet. Da gibt es nichts besonderes, denn die Endtags sehen ja in HTML immer so aus, dass sie haben spitze Klammer auf, slash, den Elementnamen, und spitze Klammer zu. Das ist also dieses Muster, die erste Variante des Musters, dass ich benutzen möchte, um den Inhalt von <p-Elementen in HTML auszulesen. Ich verwende hier "prag_match_all", was ich verwenden kann, um alle Treffer zu bekommen. Laß mir ausgeben, wenn das Muster an sich passt, diese Meldung hier. Und über "print_r" auch den Inhalt der Treffer. Schauen wir uns mal das Ergebnis an. Hier so, aber wir sollten mal in den Quellcode gehen, weil wir ja selber HTML Elemente auslesen, so ist dieser hier deutlich. Und Sie sehen jetzt folgendes. Es wird ein Treffer gefunden. Wir hatten im Beispiel drei Absätze, und es wird nur einer gefunden. Das ist ja etwas ganz seltsames. Das müssen wir uns anschauen, woran das liegt. Schuld daran ist dieser Ausdruck ".*". Der ist erst einmal gierig. Das heißt, der nimmt soviel, wie er kriegen kann. Und obwohl wir mehrere Absätze nehmen, nimmt er das hier als Anfang, und dann geht er ganz viel weiter, dieses ".*", das umfasst jetzt alles, bis zum Ende des dritten Absatzes. Wir brauchen jetzt eine Möglichkeit zu sagen, bitte sei nicht gierig, nimm nur so wenig wie möglich. Und das geht über den Modifizierer u. Speichere jetzt auch dieses Beispiel. Schauen wir uns mal das modifizierte Beispiel an, ob das Ergebnis jetzt schon besser ist. Und gehen hier wieder in den Quellcode. Und Sie sehen ja, jetzt werden die drei Absätze wirklich als verschiedene wahrgenommen. Aber unsere Lösung ist immer noch nicht perfekt, nämlich im folgenden Fall. Es kann ja auch passieren, dass innerhalb eines Absatzes ein Zeilenumbruch ist, wie ich es einmal hier gemacht habe. Und dann klappt das Ganze nicht. Schauen wir auch dieses Ergebnis mal im Browser an. Und wir schalten wieder in den Quellcode, weil wir das hier deutlich sehen. Und dann sehen Sie plötzlich, es fehlt hier ein Absatz, weil dieser Zeilenumbruch das Ganze durcheinander gebracht hat. Auch für dieses Problem gibt es eine Lösung, und die liegt in dem Modifikator s, der sagt, dass das Newlinezeichen, dass das eben jetzt hier auch funktioniert. Das heißt, wenn wir das einmal speichern und noch einmal aufrufen, dann sieht das auch schon besser aus. Schalten wieder in Seitenquelltext. Sie sehen jetzt funktioniert das hier. Wir haben unsere drei Absätze. Und noch eine letzte Modifikation. Wir wollen den Inhalt der Absätze auslesen, und dafür schreiben wir hier runde Klammer, um diesen Ausdruck ".*", denn dieser steht ja für den Inhalt der Absätze. Und schauen wir auch das modifizierte Beispiel hier wieder an. Und gehen wieder in den Quellcode. Und dann sehen Sie, dieses "preg_match_all" hat uns jetzt wirklich das geliefert. Hier zum ersten Mal ein Array mit den drei Absätzen. Und dann hier ein zweites Array, wo wir wirklich nur den Inhalt der Absätze haben. Das heißt, unser regulärer Ausdruck, um den Inhalt von Absätzen auszulesen, schaut jetzt folgendermaßen aus. Hier mit diesen Begrenzern. Diese zwei Modifikatoren, die wichtig sind. Außerdem haben wir hier die runde Klammer, um das was wir auslesen wollen. Und so schaut jetzt unser regulärer Ausdruck aus. Reguläre Ausdrücke sind immer auch etwas kryptisch und brauchen etwas Gewöhnung. Wichtig ist, dass Sie daran denken, dass reguläre Ausdrücke per se erst einmal gierig sind, das heißt, soviel wie möglich nehmen. Da Sie aber auch wissen, dass es Modifikatoren gibt, die dafür sorgen, dass sich die regulären Ausdrücke ordentlich benehmen.

PHP 5.4 & MySQL 5.6 Grundkurs

Steigen Sie auch ohne Vorwissen in die Programmierung PHP- & MySQL-basierter Webseiten ein und lernen Sie die Sprachgrundlagen wie Bedingungen, Schleifen, Funktionen usw. kennen.

7 Std. 9 min (86 Videos)
Derzeit sind keine Feedbacks vorhanden...

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!