Suchmuster

pamax

Erfahrenes Mitglied
Hi,

Ich brauch mal Hilfe bei einem Suchmuster.
Ich will eine ganze Seite nach Links durchsuchen.Das Suchmuster soll mir dann
alle Links von einer Seite ausgeben.

pMx

PS: Hat vll. jemand mal ein Tutorial zu Suchmustern?
 
Danke erstmal für deine Hilfe.
Aber irgendwie läuft das nicht...
Hier mal der Code:

PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Unbenanntes Dokument</title>
</head>

<body>
<?php
preg_match_all("<a href=[''][.:/\w]+[''][>][\w]+</a>",
   "<li><a href="linkadresse.html">Linktext</a></li>",
   $ausgabe);
print_r($ausgabe);
?> 
</body>
</html>

pMx
 
Was ist damit?
PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Unbenanntes Dokument</title>
</head>

<body>
<?php

preg_match_all("#<a href=(\"|')(.*)\\1(.*)>(.*)</a>#Uis",
               "<li><a href=\"linkadresse.html\">Linktext</a></li>",
               $ausgabe);
print_r($ausgabe);
?>
</body>

Ausgabe (Siehe Komentare, um zu sehen, was was ist):
Code:
Array
(
    [0] => Array
        (
            [0] => <a href="linkadresse.html">Linktext</a>           #der übergegebene Text
        )

    [1] => Array
        (
            [0] => "              #Welche Art Anführungszeichen beim Link " oder '
        )

    [2] => Array
        (
            [0] => linkadresse.html            #Enhalt die URL
        )

    [3] => Array
        (
            [0] =>                     #evt weiter Angaben im a-Tag
        )

    [4] => Array
        (
            [0] => Linktext         #der Linktext zum klicke
        )

)
 
Zuletzt bearbeitet:
preg_match_all("#<a href=(\"|')(.*)\\1(.*)>(.*)</a>#Uis",

Einige Überlegungen:

- was ist, wenn zwischen A und HREF noch andere Attribute stehen ?
- was ist, wenn der Link ohne Anführungszeichen steht ?
 
Dafür müssen wir etwas tiefer in die Trickkiste greifen:
Code:
<a[^>]+?href=(\x22[^\x22]+\x22|\x27[^\x27]+\x27|[^\x20]+)[^>]*?>(.+?)</a>
 
Hmm, bei ir wird immer eine Fehlermeldung angezeigt...
PHP:
Parse error:  syntax error, unexpected T_STRING in C:\Programme\xampp\htdocs\datei.php on line 11

pMx
 
Gumbos Beispiel funktioniert doch wunderbar.
PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Unbenanntes Dokument</title>
</head>

<body>
<?php

preg_match_all("#<a[^>]+?href=(\x22[^\x22]+\x22|\x27[^\x27]+\x27|[^\x20]+)[^>]*?>(.+?)</a>#Uis",
               "<li><a href=\"linkadresse.html\">Linktext</a></li>",
               $ausgabe);
print_r($ausgabe);
?>
</body>

@Gumbo:
Was bedeuten denn diese \x22 , \x27 , usw und was das [^>]?
 
Zuletzt bearbeitet:
Das \x22 beziehungsweise \x27 sind die hexadezimalen Darstellungen für das „doppelte Anführungszeichen“ (", ASCII-Zeichen dez. 34) beziehungsweise das „einfache Anführungszeichen“ (', ASCII-Zeichen dez. 39). Das Zirkumflex-Zeichen (^) am Anfang der Zeichenklassendefinition sorgt dafür, dass die Zeichenklasse negiert/umgekehrt wird, dass also alle anderen Zeichen außer der in der Zeichenklasse beschriebenen Zeichen vorkommen dürfen.

Eigentlich lässt die HTML-Syntax noch viel mehr Schreibweisen zu, aber die alle zu berücksichtigen macht das Ganze noch komplizierter.
 
Ich dachte immer ^ steht dafür, dass das was folgt am Anfang der Zeichenkette zu finden sein muss. ($ steht für das Ende).
 
Zurück