Auf meinem Code ich die follwoing regexp haben:PHP erhalten die <h[1-6]></h[1-6]> Werte aus einer HTML-Text
preg_match_all('/<title>([^>]*)<\/title>/si', $contents, $match);
, dass die <h>..</h>
-Tags aus einer Webseite abruft. Aber manchmal kann es HTML-Tags haben wie <strong>
, <b>
etc etc daher einige Modifikationen Es braucht daher habe ich versucht, diesen einen
preg_match_all('/<h[1-6]>(.*)<\/h[1-6]>/si', $contents, $match);
aber etwas falsch und abrufen nicht die Inhalte, die in HTML ist <h>
Tags.
Können Sie mir helfen, die Regexp korrekt zu ändern?
[Ihr versucht haben, einen DOM-Parser verwenden?] (http://stackoverflow.com/a/1732454/511529) – GolezTrol
Wenn die 'h's irgendwelche Attribute haben, wird dies fehlschlagen. '. *' ist auch gierig, wenn Sie mehr als einen auf der Seite haben, wird es alles essen. Parser ist Ihre beste Vorgehensweise. Werfen Sie einen Blick auf http://stackoverflow.com/questions/3577641/how-do-you-parse-and-process-html-xml-in-php – chris85
Wie es in diesem anderen Beitrag sagt, verwenden Sie Regex nicht parsen Sie HTML, es sei denn, Ihr HTML ist tot einfach und Sie müssen nicht nach verschachtelten Tags suchen. Selbst dann, schlechte Idee. Es gibt DOM-Parser ([DOMDocument] (https://php.net/domdocument)), die zum Parsen von HTML gemacht werden und mit denen man recht einfach arbeiten kann. Sie haben mehrere der gleichen Methoden wie "getElementsByTagName", mit denen man jedes '' -Tag finden kann. –