| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |
|

30-08-2009, 19:47
|
|
benutzer_michi
Registrierter Benutzer
|
|
Registriert seit: Aug 2009
Beiträge: 27
|
|
preg_match Klassen auslesen
Hi,
ich möchte gern aus dem Quelltext(unten) den Text "den Inhalt brauch ich".
Dazu wollte ich die Funktion preg_match('/<div id="e">.*?<\/div>', $Dateipfadname,$match); nehmen, klappt aber nicht.
Es wäre schon falls mir jemand helfen könnte
Code:
<table class="a" width="900px">
<tr class="b">
<div>
<td class="c"><div class="d"><span>blablabla</span></div></td>
<td class="e"><div> den Inhalt brauch ich</div></td>
</div>
</tr>
|

30-08-2009, 20:12
|
Kropff
  Administrator
|
|
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.310
|
|
PHP-Code:
$text = '<table class="a" width="900px">
<tr class="b">
<div>
<td class="c"><div class="d"><span>blablabla</span></div></td>
<td class="e"><div> den Inhalt brauch ich</div></td>
</div>
</tr>';
preg_match ('/<td class="e"><div>(.+\w)<\/div><\/td>/', $text, $hit);
print_r($hit);
Auf die Schnelle. Und mal völlig davon abgesehen, dass der HTML-Code schlichtweg Müll ist.
Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
|

30-08-2009, 20:29
|
|
benutzer_michi
Registrierter Benutzer
|
|
Registriert seit: Aug 2009
Beiträge: 27
|
|
Wenn ich das auf mein Code anwende gibt er "Array" aus aber nicht das was ich haben wollte ...
|

30-08-2009, 20:34
|
Kropff
  Administrator
|
|
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.310
|
|
Zitat:
Zitat von benutzer_michi
Wenn ich das auf mein Code anwende gibt er "Array" aus aber nicht das was ich haben wollte ...
|
Darum habe ich ja auch ein print_r($hit); eingefügt. Ein klein wenig solltest du schon mitdenken. Und wissen, was Arrays sind.
Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
|

30-08-2009, 21:03
|
|
benutzer_michi
Registrierter Benutzer
|
|
Registriert seit: Aug 2009
Beiträge: 27
|
|
klappt nicht .... Der Code sieht so ungfähr aus es gibt also mehr als eine "e"-Klasse und vielleicht noch erwähnenswert, das ich die Daten für preg_match aus eine anderen Datei bekommen hatte mittels file_get_content
<table class="a" width="900px">
<tr class="b">
<div>
<td class="c"><div class="d"><span>blablabla</span></div></td>
<td class="e"><div> den Inhalt brauch ich</div></td>
</div>
</tr>
<tr class="b">
<div>
<td class="c"><div class="d"><span>...</span></div></td>
<td class="e"><div> anderer Inhalt </div></td>
</div>
</tr>
<tr class="b">
<div>
<td class="c"><div class="d"><span>...</span></div></td>
<td class="e"><div> wiederanderer Inhalt </div></td>
</div>
</tr>
</table>
Geändert von benutzer_michi (30-08-2009 um 21:15 Uhr)
|

30-08-2009, 21:07
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.486
|
|
Wenn du ein Problem hast, den Inhalt für das Schreiben in di Datei korrekt zusammenzusetzen - dann verzichte zunächst auf das Schreiben in die Datei, und schaue stattdessen, dass du den Inhalt in einem Textstring korrekt zusammengesetzt bekommst, und lasse dir diesen zur Kontrolle mit echo ausgeben. Wenn du das hingekriegt hast, dann kannst du es anschliessend verwenden, um diesen Textstring in die Datei zu schreiben.
Und wenn dein Code nicht das tut, was er soll - dann zeige uns deinen Code (bitte erst mal unter Berücksichtigung gerade genannter Vereinfachung der Aufgabe). Nur dann können wir dir sagen, was du falsch machst.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
|

30-08-2009, 21:10
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.486
|
|
Zitat:
Zitat von benutzer_michi
klappt nicht ....
|
Gewöhne dir so einen Mist bitte schleunigst ab!
Und damit meine ich sowohl, Postings, in denen gerade noch etwas ausführlicheres stand, derart zu editieren, als auch "klappt nicht" als "Problembeschreibung" abzuliefern.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
|

30-08-2009, 21:27
|
Kropff
  Administrator
|
|
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.310
|
|
Zitat:
Zitat von benutzer_michi
klappt nicht .... Der Code sieht so ungfähr aus es gibt also mehr als eine "e"-Klasse und vielleicht noch erwähnenswert, das ich die Daten für preg_match aus eine anderen Datei bekommen hatte mittels file_get_content
|
Und anhand welches Kriteriums soll nun die entsprechende Zeile ausgewählt werden? Btw: Mein Code funktioniert auch bei deinem ausführlichen Beispiel. Vorausgesetzt dass "den Inhalt brauch ich" am Anfang steht.
Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
|

30-08-2009, 21:39
|
|
benutzer_michi
Registrierter Benutzer
|
|
Registriert seit: Aug 2009
Beiträge: 27
|
|
$datei=fopen($Dateinamepfad,'r+');
$save=file_get_contents($inhaltderdatei);
echo($save); //Ausgabe zur Kontrolle, klappt
preg_match ('/<td class="e"><div>(.+\w)<\/div><\/td>/', $save, $hit);
print_r($hit); //Ausgabe :"Array()"
Müsste er normaler Weise nicht den gesuchten Wert ausgeben ? Die oben genannten Beispiele kann ich ausgeben, wenn ich die auszulesenden Daten nicht in eine externe Datei habe
Geändert von benutzer_michi (30-08-2009 um 21:50 Uhr)
|

30-08-2009, 21:43
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.486
|
|
Bitte nutze die [php]-Tags, um PHP-Code einzubinden.
Eigenes Herumspielen mit [color]-Tags macht Postings kaum lesbarer; und für "normalen" Text deinerseits tut's auch die Defaultfarbe, ohne zusätzliche Formatierung.
Zitat:
Zitat von benutzer_michi
Müsste er normaler Weise nicht den gesuchten Wert ausgeben ?
|
Ja (als Element innerhalb des Arrays) - wenn er denn gefunden worden wäre.
(Und mit deinem Beispieltext, den du vorhin angegeben hast, passiert bei mir im Test auch genau das.)
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Geändert von wahsaga (30-08-2009 um 21:45 Uhr)
|

30-08-2009, 21:48
|
Kropff
  Administrator
|
|
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.310
|
|
Zitat:
Zitat von benutzer_michi
$datei=fopen($Dateinamepfad,'r+');
$save=file_get_contents($inhaltderdatei);
|
Das ist doppeltgemoppelt. file_get_contents reichts völlig aus. Wie sieht denn nun der Original-Code aus? Gibt es da z.B. Zeilenumbrüche? Wenn ja, dann muss noch ein Modifier angegeben werden:
PHP-Code:
preg_match ('/<td class="e"><div>(.+\w)<\/div><\/td>/m', $text, $hit);
Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Geändert von Kropff (30-08-2009 um 21:50 Uhr)
|

30-08-2009, 21:57
|
|
benutzer_michi
Registrierter Benutzer
|
|
Registriert seit: Aug 2009
Beiträge: 27
|
|
Zitat:
|
Und anhand welches Kriteriums soll nun die entsprechende Zeile ausgewählt werden?
|
Es sollen alle Elemente des Arrays von der Klasse "e" ausgegeben werden,
|

30-08-2009, 21:58
|
Kropff
  Administrator
|
|
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.310
|
|
Ich sehe gerade, dass da was nicht stimmt:
PHP-Code:
$datei=fopen($Dateinamepfad,'r+');
$save=file_get_contents($inhaltderdatei);
Was ist denn nun die Datei? $Dateinamepfad oder $inhaltderdatei? Wo werden die Variablen gesetzt?
Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
|

30-08-2009, 21:59
|
Kropff
  Administrator
|
|
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.310
|
|
Zitat:
Zitat von benutzer_michi
Es sollen alle Elemente des Arrays von der Klasse "e" ausgegeben werden,
|
Dann nimm preg_match_all. Und bitte behalte diese wichtigen Infos nicht für dich.
Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
|

30-08-2009, 22:05
|
|
benutzer_michi
Registrierter Benutzer
|
|
Registriert seit: Aug 2009
Beiträge: 27
|
|
Keine Zeilenumbrüche, aber die Tabelle ist noch in eine übergeordnete Tabelle geschachtelt.
Er gibt nur "Array()" aus mit der Funktion print_r.
Zitat:
|
Was ist denn nun die Datei? $Dateinamepfad oder $inhaltderdatei? Wo werden die Variablen gesetzt?
|
Das mit der Pfadangabe stimmt schon, weil er die komplette Datei mit echo ausgibt im php-code.
|
|
Aktive Benutzer in diesem Thema: 2 (Registrierte Benutzer: 0, Gäste: 2)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|