3Danke
ERLEDIGT
NEIN
NEIN
ANTWORTEN
9
9
ZUGRIFFE
442
442
EMPFEHLEN
-
21.12.11 19:21 #1
Hallo ich habe eine .txt Datei mit folgendem Inhalt.
Code :1 2 3 4 5 6 7 8 9 10
<div id="tag">12</div> <div id="monat">03</div> <div id="jahr">1988</div> <div id="tag">22</div> <div id="monat">06</div> <div id="jahr">1983</div> usw.
Nun möchte ich immer den Tag den Monat und Das Jahr in einer variable speichern.
Mit welchem PHP Befehl kann ich beispielsweise <div id="tag">12</div> suchen ? (preg_match?) und dann die 12 herausfiltern und in Variable $tag speichern. Der HTML Code ist uninteressant.
Hat da jemand ne idee?
-
Jep. preg_match() ist die Lösung
---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
21.12.11 22:05 #3
Nicht ganz glaub, weil ich ja nur den String "<div id="tag">" dann kann ich zwar schoneinmal diesen Div Tag filtern jedoch muss ich ja irgendwie alles was in diesen Divs steht herausbekommen. also nur die 12 oder nur die 22 etc...
-
Doch, Reguläre AUsdrücke sind genau das was du haben willst.
Habs mal auf die schnelle geteset
Hier der ganze Test:
http://regexp-evaluator.de/evaluator...3c99/#ergebnis
Und dies war der Pattern
Achja, halt nicht preg_match sondern preg_match_all() da du ja mehrere Resulate haben willst.PHP-Code:$pattern = '/<div id="tag">([^<]+)<\/div>/isU';
---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
22.12.11 00:08 #5
- Registriert seit
- May 2006
- Ort
- There is no place like 127.0.0.1
- Beiträge
- 3.521
Man kann es auch so lösen:
Code php:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
<?php error_reporting(E_ALL|E_STRICT); ini_set('display_errors', 1); /** Read in the file **/ $contents = file_get_contents('partread.txt'); /** Explode it into an array **/ $lines = explode("\n", $contents); /** Append as last element the end-node **/ array_push($lines, '</node>'); /** Append as first element the begin-node **/ $lines = array_merge(array('<node>'), $lines); /** Walk over each line and check if it is empty **/ foreach($lines as $lineno => $content) { /** If its empty, add set it to end-node and begin-node **/ if($content == ' ') $lines[$lineno] = "</node>\n<node>"; } /** Implode all lines as one single string **/ $contents = implode("\n", $lines); /** Embed all nodes into a nodes root element **/ $contents = '<nodes>' . $contents . '</nodes>'; /** Create a XML object for easy parsing **/ $xml = new SimpleXMLElement($contents); /** Just for debugging **/ //var_dump($xml); foreach($xml as $node) { /** Just for your information **/ //var_dump($node); /** Now we have all single informations **/ $day = $node->div[0]; $month = $node->div[1]; $year = $node->div[2]; /** Here we are! **/ echo "$year-$month-$day<br/>"; }
Produziert diese Ausgabe:
Code :1 2
1988-03-12 1983-06-22
Geändert von saftmeister (22.12.11 um 00:10 Uhr) Grund: Tag und Monat waren vertauscht
Grüße
--
Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)
-
22.12.11 14:21 #6
Super! Das is denke ich echt genau das was ich benötige
Da ich in meinem Ausgangsbeispiel den Inhalt der Textdatei stark vereinfacht dargestellt habe, muss ich nun doch nocheinmal etwas nachfragen. Der Inhalt der Textdatei ist ein HTML Quelltext. Das bedeutet, dass in der Datei, neben den <div id="tag"></div> Tag's etc. noch weitere <div> Container als auch Tabellen usw. vorhanden sind.
Mein PHP Code:
PHP-Code:$myFile = "source.txt";
$handle = fopen($myFile, 'r');
while (!feof($handle)){
$subject = fgets($handle, 50);
$pattern = '/<div class="header">([^<]+)<\/div>/isU';
$result = preg_match_all($pattern, $subject, $subpattern);
echo '<p>Der verwendete Reguläre Ausdruck trifft auf den zu durchsuchenden Text '.
(($result) ? $result.' mal ' : 'nicht ').'zu.</p>';
echo '<pre>'.print_r($subpattern, TRUE).'</pre>';
}
fclose($handle);
Auszug aus der Textdatei:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
<div id="p2935449" class="productlistPopup" onmouseover="this.style.visibility='visible';" onmouseout="this.style.visibility='hidden';"> <div class="header"> Acer Aspire X3990 </div> <img class="productPic" id="img_p2935449" src="/pics/common/gifspacer.gif" width="168" height="140" alt="" /> </div> </td> <td width="100%" style="padding-left:5px; padding-right:5px;" valign="top" align="left" class="cellborder"> <a class="b fs13" href="/preisvergleich/OffersOfProduct/2935449_-aspire-x3990-pt-sgke2-acer.html">Acer Aspire X3990 (PT.SGKE2)</a> (PC-System) <a href="/preisvergleich/OffersOfProduct/2935449_-aspire-x3990-pt-sgke2-acer.html" class="fs10" style="text-decoration:none;"> <span class="nobr"> <img src="/pics/rating/orange.gif" width="10" height="10" alt="Besucher-Produktbewertung für Acer Aspire X3990 (PT.SGKE2): 5,0 Sterne" border="0"/><img src="/pics/rating/orange.gif" width="10" height="10" alt="" border="0"/><img src="/pics/rating/orange.gif" width="10" height="10" alt="" border="0"/><img src="/pics/rating/orange.gif" width="10" height="10" alt="" border="0"/><img src="/pics/rating/orange.gif" width="10" height="10" alt="" border="0"/> </span> </a> <br/>
Ausgegeben soll nun nur:
Code :1 2 3
<div class="header"> Acer Aspire X3990 </div>
Angeblich wird keine übereinstimmung mit dem pattern gefunden .
-
Ist logisch. Mit fgets() gehst du die Datei schrittweise (50 Zeichen pro schritt) durch und vergleichst die Teilstrings mit dem pattern. Wenn Die Datei aber gerade in diesem Bereich geteilt wird, dann gehts nicht mehr
Code :1 2 3 4 5 6 7 8 9 10 11
<div id="p2935449" class="productlistPopup" onmous eover="this.style.visibility='visible';" onmouseou t="this.style.visibility='hidden';"> <div class="h eader"> Acer Aspire X3990 </div> <img class="prod
Du würdest besser file_get_contents() nehmen und die ganze Datei auf einmal einlesen
PHP-Code:$myFile = "source.txt";
$subject = file_get_contents ($myFile);
$pattern = '/<div class="header">([^<]+)<\/div>/isU';
$result = preg_match_all($pattern, $subject, $subpattern);
echo '<p>Der verwendete Reguläre Ausdruck trifft auf den zu durchsuchenden Text '.
(($result) ? $result.' mal ' : 'nicht ').'zu.</p>';
echo '<pre>'.print_r($subpattern, TRUE).'</pre>';
---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
22.12.11 14:39 #8
Saustark! Vielen Dank für die schnelle Hilfe und ein frohes Weihnachtsfest
-
22.12.11 15:06 #9
Jetzt wollte ich das ganze mit nem Bild Tag machen, da in diesem Tag alle Infos drin stehen die ich benötige und habe versucht den Regulären Ausdruck abzuändern:
PHP-Code:$pattern = '/<img class="osimg"([^<]+)\" />/isU';
Code :1
<img class="osimg" border="0" src="s1_produktbild.gif" title="Canon EOS 600D " alt="Canon EOS 600D Kit 18-55 mm" />
src="" und title="" sind für mich interressant.
Als Fehlermeldung erhalte ich:
Warning: preg_match_all() [function.preg-match-all]: Unknown modifier '>' in C:\xampp\htdocs\ps\find.php on line 8
Bezieht sich das auf >/isU ? Wenn ja wie kann muss der richtige modifier aussehen ?
-
/ muss escapte werden -> \/
Und die Werte kannst du doch auf einmal auslesen
Code :1
/<img class="osimg".*src="([^"]+)".*title="([^"]+)".*\/>/isU
---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
Ähnliche Themen
-
Teil einer Seite auslesen
Von EGJSoldier im Forum PHPAntworten: 8Letzter Beitrag: 21.07.09, 17:52 -
Teil einer statischen URL auslesen
Von makesomenoise im Forum PHPAntworten: 8Letzter Beitrag: 22.05.09, 13:19 -
Teil einer URL auslesen
Von AHelfer im Forum PHPAntworten: 4Letzter Beitrag: 05.03.08, 10:28 -
Teil einer URL auslesen
Von low-group im Forum PHPAntworten: 4Letzter Beitrag: 20.02.04, 19:12 -
[..php..] - datei zum teil auslesen. - downloadcounter
Von Jarod im Forum PHPAntworten: 1Letzter Beitrag: 17.07.01, 00:41





Zitieren


Login






[PHP][Snippet] Array zu XML konvertieren