Linküberprüfung - regulärer Ausdruck

topf

Mitglied
Hallo,
ich schreibe gerade an einer Klasse zur Überprüfung von Links und deren Attributen.

Und zwar bin ich gerade an einer Stelle, wo mein Wissen von regulären Ausdrücken aufhört.
Da ich nur ein geringes Wissen über reguläre Ausdrücke habe, bin ich gerade an einer Stelle, wo ich nicht weiss, wie ich folgendes Anstellen soll.

Mein Ausgangsquellcode, mit dem ich angefangen habe :
PHP:
$link = "<a title=\"Spiele aus aller Welt für jedermann!\" target=\"_blank\" href=\"spielesammlung.php\">Spiele</a> ";

$anchor = "Spiele";
$titletag = "Spiele aus aller Welt für jedermann!";
$target = "_blank";
$href = "spielesammlung.php";

if (preg_match("/>(".$anchor."){1}</", $link))
	echo "anchor gefunden<br>";
if (preg_match("/(href=\"".$ref."\")/", $link))
	echo "href gefunden<br>";
if (preg_match("/(title=\"".$titletag."\"){1}/", $link))
	echo "title gefunden<br>";
if (preg_match("/(target=\"".$target."\"){1}/", $link))
	echo "target gefunden<br>";

Dieser Quelltext überprüft in dem Link die versch. Elemente.
Und bisher funktioniert dies auch, es wird keine Rücksicht auf die Reihenfolge der Attribute innerhalb des <a >- tags gemacht, da ja alles einzelnd überprüft wird.

Gibt es eine Möglichkeit diese 4-Abfragen in eine preg_match() zu packen, bei der die Reihenfolge auch irrelevant ist?
Oder widerspricht diese Frage jeder Idee von regulären Ausdrücken?

Hab direkt nichts gefunden, deswegen eröffne ich einfach mal einen neuen Thread, um die Rechtfertigung für diesen Thread eingeholt zu haben ;)


Gruß Lars
 
Zuletzt bearbeitet:
Danke, werde ich mir morgen anschauen,
gibt es sonst noch irgendwelche Vorschläge.

Die vorgeschlagene Seite sieht recht unübersichtlich aus und liefert auf Anfrage bereits geschriebene reg. Ausdrücke. Ich suche, aber eine Möglichkeit, um die Ordnung innerhalb des Ausdrucks unwesentlich zu machen :(


Gruß Lars
 
Weis nicht ob es dir weiterhilft:
http://www.regex-tester.de/bs_20050607205359_Links-aus-einer-HTML-Seite-finden-.html

Code:
$link = "<a title=\"Spiele aus aller Welt für jedermann!\" target=\"_blank\" href=\"spielesammlung.php\">Spiele</a> ";

So sieht sicher nicht der „Ausgangswquellcode” aus.
Sicher so:
$link = '<a title="Spiele aus aller Welt für jedermann!" target="_blank" href="spielesammlung.php">Spiele</a> ';

Und dann würde sich ein ganz anderes Suchpattern ergeben :-)
 
Probier mal Folgendes:
PHP:
preg_match_all('<a(?:\s+(href="'.$ref.'"|title="'.$title.'"|target="'.$target.'"))?>'.$anchor.'</a>', $link, $matches);
Nun musst du nur noch die Treffer auswerten.
 
Hallo.

Der reguläre Ausdruck funktioniert irgendwie nicht.
Wie löse ich nun das Problem der variablen Reihenfolge?
Kann mir da jemand mit Erfahrung helfen?


Ein weiteres Problem stellt der Auslesevorgang hinsichtlich der Performance da.


Meine Idee ist folgende:
Da reguläre Ausdrücke ja ressourcenfressend sind ( habe ich gelesen ) , will ich egtl nur einen preg_match_all() für die Suche der Links in einem Quelltext verwenden. ( Funktioniert auch bisher ).

Nun aber weiter.

Soll ich in diesem preg_match_all() auch gleich eine etwaige Zerlegung des Links in seine Attribute vornehmen. ( wie mach ich das hinsichtlich des oben genannten Problems) ,
und dann die einzelnen Arrayelemente vergleichen? ( Umgang mit Arrays ist mir bekannt)
Oder mit mehreren reg Exps arbeiten?

Ich dachte an eine Lösung mit nur einem regulären Ausdruck und dann mit Arrayroutinen, die - geschickt eingesetzt - den Rest übernehmen.

Für konstruktive Ideen bin ich gerne offen.

Gruß Lars
 
Zurück