preg_match_all Problem

Hatachy

Erfahrenes Mitglied
HI !

Also soweit bin ich:

PHP:
<?php
$file = "http://xxx";
$file_arr = file($file);
$quelltext = implode("", $file_arr);
preg_match_all("=<body[^>]*>(.*)</body>=siU", $quelltext, $a);
print $a[1][0];
?>

Diesen preg_match-Befehl um den body auszulesen hab ich gefunden. Leider hab ich so meine Probleme mit regulären ausdrücken. ich würde nun gerne aus meinem html dokument ein ganz bestimmtes wort auslesen, welches zwischen 2html-tags steht und anderen wörtern um die Stelle genau festzumachen

Zur Erläuterung:
Html-Datei ist eine Tablle mit Daten:
Links steht beispielsweise "Name:"
nun möchte ich rechts den namen auslesen !!!
Leider ist das ergebnis bei mir immer nix !

PHP:
<?php
$file = "http://xxx";
$file_arr = file($file);
$quelltext = implode("", $file_arr);
preg_match_all("=<td><b><FONT COLOR=\"#FFFFFF\">Name:</font></b></td><td><FONT COLOR=\"#FFFFFF\">(.*)</FONT></td>=siU", $quelltext, $a);
print $a[1][0];
?>

Meiner Meinung anch müsste das klappen, aber anscheinend ist da rigendein kleiner Fehler :rolleyes:

Bin dankbar über jegliche Hilfe
 
hmm,

so wie ich das sehe verwendest du = Zeichen als delimiter, naja aber du hast auch = Zeichen im Matchstring drin, darum geht das wohl nicht richtig.
 
Hmmm

Hab auf deine Antowrt hin, nun die =s probiert zu entwerten.
PHP:
preg_match_all("=<td><b><FONT COLOR\=\"#FFFFFF\">Name:</font></b></td><td><FONT COLOR\=\"#FFFFFF\">(.*)</FONT></td>=siU", $quelltext, $a);
Leider funktioniert das auch nicht gerade.

Kann mir sonst mal eben einer das sonst einfach an diesem Forum, an diesem thread erklären ???
Ist ja im Prinzip nichts großartig anderes z.B. von dieser Seite, diese Antwort auszulesen.

Ich weiß einfach nicht, was dadran noch falsch sein könnte ;((


Edit:
Hmmm, denkt euch einfach den \ vor den gleich Zeichen, das Forum hier löscht die wieder :rolleyes:
 
Zuletzt bearbeitet:
hmm,

ich meinte damit das du die = Zeichen am anfang und am Ende des Suchstrings Strings in zB. | verwandelst.

|<td><b><FONT COLOR=\"#FFFFFF\">Name:</font></b></td><td><FONT COLOR=\"#FFFFFF\">(.*)</FONT></td>|siU"
 
Danke nochmals, ...

aber so peinlich es auch ist. hab das gestern noch selbst rausgefunden, bzw. heute Nacht *gähn*

Hab vergessen hier zu schrieben ! Funktioniert jetzt soweit erstmal alles, aber troutzdem Danke !!!

Bis dann ...
 
So, nachdem das nun alles klappt hab ich ein neues Problem !!!

Ich muss in meinen Suchstring eine Variable einbauen leider kalappt das nciht wie gewünscht. :rolleyes:

PHP:
$suchmustera = "hallo";
$suchmusterb = "hatachy";
preg_match_all("/\$suchmustera(.*)\$suchmusterb/isU", "hallo ich bin sven", $res);
echo $res[1][0];

ich habe das sowohl mit einem backslash, als auch 2 und 3 vor den Variablen versucht, doch es will einfach nciht funktionieren :mad:
 
weg mit dem backslash! ;)

PHP:
$suchmustera = "hallo";
$suchmusterb = "hatachy";
$suchmuster = "/".$suchmustera."(.*)".$suchmusterb."/isU";
echo $suchmuster."<br>"; //sieht's so aus wie du es haben willst ?
preg_match_all($suchmuster, "hallo ich bin sven", $res);
echo $res[1][0];
 
Oh man ! Eigentlich dachte ich, ich hätte das bereits ausprobiert ! Danke auf jeden Fall, funktioniert blendend.
 
Komm mir zwar langsam doof vor (ja, jetzt erst :p), aber könnte mir nocheinmal jemand helfen ???

Also ich habe diese zwei html zeilen
Code:
<TD WIDTH=110><CENTER><SPAN CLASS="style"><B>XXXX</TD>
<TD WIDTH=90><CENTER><SPAN CLASS="style">(yyy pts)</TD>

XXXX ist dabei eine Variable; yyy pts ist der Teil, den ich auslesen möchte.
Ich habe es dann auf folgende Weise (und viele andere natürlich) probiert:

PHP:
preg_match_all("/<TD WIDTH=110><CENTER><SPAN CLASS=\"style\"><B>".$var."<\/TD>\n<TD WIDTH=90><CENTER><SPAN CLASS=\"style\">(.*)<\/TD>/siU", $quelltext, $pts);

Das selbe auch ohne \n und mit "Enter" nach <\/TD>
Alles nützt nix. Andere stellen asulesen ist kein Problem. Ich kann auch die beiden zeieln auslesen, aber ich will ja nur die yyy pts.

Finde mal wieder keinen Fehler... :rolleyes:
 
So, hab jetzt herausgefunden, woran genau es liegt.

Es leigt tatsächlich am Zeilenumbruch.


Mein Problem besteht jedoch noch immer, da es weder mit "Enter", mit \n noch mit \r funktioniert. Es gibt zwar noch andere Schriebweisen, aber einen anderen Zeilenumbruch kenne ich nicht !!!

Weiß irgendjemand noch Rat ??? :rolleyes:
 
Zurück