preg_match problem

resoucer

Gesperrt
ID: 77379
L
20 April 2006
2.846
109
hi, ich komm aktuell bei einer funktion nicht weiter

möchte per file eine webseite öffnen, welche folgenden quellcode hat (anhang bzw unten)
dieser soll in arrays geschrieben werden
unzwar so
film[1][0]="Street Fighter - Die entscheidende Schlacht";
film[1][1]="Jean-Claude Van Damme, Raul Julia, Ming-Na Wen, Damian Chapa <br>
DVD, Release Year: 1994<br>Columbia Tristar Home Entertainment";
film[1][2]="Brandneu: € 8.99";

und dann film[2][0] usw.

nur weis ich echt nicht wie ich das mit preg_match hin bekommen könnte das er genau das macht.

Würde echt helfen wenn sich das einer mal anschauen kann.

Hier ist der Beispielquellcode der analysiert werden soll:
 
Zuletzt bearbeitet:
1. ist das Parsen von fremden Code verboten
2. solltest du den anderen auch noch eine Tabellenstruktur geben, wie du sie mir gegeben hast


ich habe dazu ein RegExp gebastelst habe aber Probleme das der Dot keine Zeilenumbrüche nutzt und ich auch nicht weiß, wie dies richtig zu implementieren ist:
Code:
(?<=<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="2" WIDTH="100%">)(.+?\s)(?=</table>)
 
1. ist das Parsen von fremden Code verboten
2. solltest du den anderen auch noch eine Tabellenstruktur geben, wie du sie mir gegeben hast


ich habe dazu ein RegExp gebastelst habe aber Probleme das der Dot keine Zeilenumbrüche nutzt und ich auch nicht weiß, wie dies richtig zu implementieren ist:
Code:
(?<=<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="2" WIDTH="100%">)(.+?\s)(?=</table>)

1. ja
2. ist als download dabei da die datei zu groß ist
 
1: DAs Parsen ist erlaubt sofern man die einwilligung des Webmasters der Seite hat dessen Code man parsen möchte.

2: Ich benutzte selten die Variante preg_match, viel lieber nutz ich zum Parsen von Quelltexten preg_match_all, sry hab mir aber auch nicht den Quelltext von der seite angeschaut aber da das alles wieder kehrende dinge sind (denk ich) sollte das halt auch mit preg_match_all tun :)

Frag mich nicht nach dem Code, hab schon nächte damit verbracht jemanden das zu erklären :D
 
1: DAs Parsen ist erlaubt sofern man die einwilligung des Webmasters der Seite hat dessen Code man parsen möchte.

2: Ich benutzte selten die Variante preg_match, viel lieber nutz ich zum Parsen von Quelltexten preg_match_all, sry hab mir aber auch nicht den Quelltext von der seite angeschaut aber da das alles wieder kehrende dinge sind (denk ich) sollte das halt auch mit preg_match_all tun :)

Frag mich nicht nach dem Code, hab schon nächte damit verbracht jemanden das zu erklären :D
okay, passt besser die funktion.
Problem sind ja die reg. Ausdrücke :-(
 
also wenn du die zeilenumbrüche rausschmeisst funzt folgendes:
Code:
(?<=<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="2" WIDTH="100%">)(.+?)(?=</table>)

vllt kann ja jemand mit mehr RegExp-Erfahrung den Modifer s (dot matches all) einbauen
 
Code:
<?php

error_reporting(E_ALL ^ E_STRICT);

$matches = array();
$html_file = file_get_contents('auftrag2.htm');
$pattern = '/';
$pattern .= '(?:<td[^>]+?><a[^>]+><img[^>]+><\/a><\/td>\s*?)';
$pattern .= '(?:<td[^>]+?>\s*<a[^>]+><b>(.*?)<\/b><\/a>\s*)';
$pattern .= '(.+?)';
$pattern .= '(?:<span[^>]+><br>\s([^:]+?:)\s*?)';
$pattern .= '(?:<a[^>]+?>\s*(.?\s\d+\.\d\d)<\/a><\/span>\s*?<\/td>)';
$pattern .= '/ims';

preg_match_all($pattern, $html_file, $matches, PREG_SET_ORDER);

print_r($matches);

?>

Getestet und funkioniert.
Obs performant ist usw.. keine ahnung (könnte sein, dass nen paar zeichen da oben zu viel sind.)
 
hmm hab da auch mal was gemacht aber ganz so verwirrend ist es glaub ich net ^^
Edit by Shamane: URL auf wunsch entfernt

Quelltext von Dir (steht auch schon im Form drin):
Edit by Shamane: URL auf wunsch entfernt
 
Zuletzt bearbeitet: