Sempervivum
Erfahrenes Mitglied
Wenn dein Code aus dem ersten Posting jetzt funktioniert ist ja alles OK. Aber es kann nicht schaden, den Dingen auf den Grund zu gehen.
Bei diesem Code:
gibt es folgende Probleme:
Die Zeichen am Anfang und Ende des Regex müssen übrigens nicht unbedingt Slashes sein, dies funktioniert genau so:
Das kann praktisch sein wenn man viele Slashes in der Regex hat, dann muss man sie nicht alle escapen und es wird lesbarer. Wie Du siehst, konnte ich den Backslash im
Bei diesem Code:
Code:
<?php
$datei = '<a href="file:///Users/frankpaul/Library/Mobile%20Documents/com~apple~CloudDocs/WSL_CMS/home.html"><span class="s2"><span class="s2">Ho3wewewepo5e</span></a>';
$datei = htmlentities($datei);
preg_match('//<a\s+href.*>([^<]+)<.*<\/a>/gm/', html_entity_decode($datei), $matches);
echo "ERGEBNIS: ".$matches[1];
?>
- Ganz am Anfang ist ein Schrägstrich zu viel.
- preg_match akzeptiert keine Modifier, braucht man sie, muss man preg_match_all verwenden.
Code:
$datei = '<a href="file:///Users/frankpaul/Library/Mobile%20Documents/com~apple~CloudDocs/WSL_CMS/home.html"><span class="s2"><span class="s2">Ho3wewewepo5e</span></a>';
$datei = htmlentities($datei);
var_dump($datei);
var_dump(html_entity_decode($datei));
preg_match_all('/<a\s+href.*>([^<]+)<.*<\/a>/m', html_entity_decode($datei), $matches);
var_dump($matches);
Das ist vollkommen richtig. Was ich meinte, waren die Backslashes vor den spitzen Klammern, aber da hatte ich eine Wissenslücke, denn @Yaslaw hat aufgeklärt, dass die spitzen Klammern doch eine Sonderbedeutung haben können.Nach meinem Wissen gehört an den Anfang und das Ende des Regex ein Slash.
Die Zeichen am Anfang und Ende des Regex müssen übrigens nicht unbedingt Slashes sein, dies funktioniert genau so:
Code:
preg_match_all('|<a\s+href.*>([^<]+)<.*</a>|m', html_entity_decode($datei), $matches);
</a>
weg lassen ohne dass es ein Problem gegeben hat.