php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2010

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 18.05.2010, 09:10  
Erfahrener Benutzer
 
Registriert seit: 15.04.2010
Beiträge: 813
PHP-Kenntnisse:
Fortgeschritten
Paul.Schramenko befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] falsche Ausgabe Reg. Ausdruck - preg_match_all daher leer

Moin Moin, ich hab ein kleines Problem.
Ich hab aus einer alten Seite einige HTML-Tabellen, die alle hintereinander angelegt sind. Haben auch alle den gleichen Aufbau:

Code:
<table cellpadding="3">
    <tbody>
         <tr><td>1.</td><td>Name1</td><td>Vereinsname</td><td>3  Punkte</td></tr>
         <tr><td>2.</td><td>Name2</td><td>Vereinsname</td><td>3  Punkte</td></tr>
    </tbody>
</table>
<table cellpadding="4">
    <tbody>
         <tr><td>1.</td><td>Name1</td><td>Vereinsname</td><td>6  Punkte</td></tr>
         <tr><td>2.</td><td>Name2</td><td>Vereinsname</td><td>5  Punkte</td></tr>
         <tr><td>3.</td><td>Name3</td><td>Vereinsname</td><td>4.5  Punkte</td></tr>
    </tbody>
</table>
Da es verdammt viele Tabellen sind und ich keinen Bock habe alles per Hand zu machen würde ich gerne das ganze einmal automatisiert auslesen und in eine DB eintragen.

Ich habe das ganze rauskopiert und einfach mal in eine Variable geschrieben und wollte dann mit einem regulären Ausdruck das ganze Stück für Stück aufbröseln.

Mein Code sieh so aus:
PHP-Code:
<?php
error_reporting
(-1);

$var '...';    // hier stehen meine Tabellen drin. 
                 // Um den Text zu verkürzen habe ich es weggelassen

$matches = array();
$start '<table(.*?)>';  // Auch probiert mit:  '\<table(.*?)\>'
$end   '<\/table>';
$pattern '!' $start '(.*)' $end '!';
echo 
$pattern.'<br />';   // Ausgabe: !(.*)<\/table>!
preg_match_all($pattern$var$matches);
var_dump($matches);       // Keine Treffer, ist ja aber auch klar.

?>
So hat zufällig jemand ne Idee, warum meine Pattern abgeschnitten dargestellt werden? Oder habe ich einfach einen Fehler im regulären Ausdruck?
__________________
"My software never has bugs, it just develops random features."
"Real programmers don't comment. If it was hard to write, it should be hard to understand!"
Positive Bewertungen sind nicht unwillkommen...

Geändert von Paul.Schramenko (18.05.2010 um 10:50 Uhr).
Paul.Schramenko ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 18.05.2010, 10:40  
Moderator
 
Benutzerbild von Asipak
 
Registriert seit: 18.07.2005
Beiträge: 4.072
Asipak sorgt für eine eindrucksvolle AtmosphäreAsipak sorgt für eine eindrucksvolle Atmosphäre
Standard

Sieht merwürdig aus, stimmt.

Zitat:
// Ausgabe: !\(.*)\<\/table\>!
Woher stammen denn die escape-Zeichen? Oder hast du diese bei einem anderen Versuch hinzugefügt?

Funtkioniert es denn, wenn du den Ausdruck direkt in eine Variable schreiben und auf den Verkettungsoperator verzichten würdest?

Wie wäre es hiermit? PHP: DOM - Manual

[edit]

achso: Hast du mal in den Browserquelltext geschaut?

Geändert von Asipak (18.05.2010 um 10:48 Uhr).
Asipak ist offline  
Alt 18.05.2010, 10:49  
Erfahrener Benutzer
 
Registriert seit: 15.04.2010
Beiträge: 813
PHP-Kenntnisse:
Fortgeschritten
Paul.Schramenko befindet sich auf einem aufstrebenden Ast
Standard

ups also die Escape zeichen stammen von zweiten versuch.
Habe es auch so dierekt zusammen gefrämelt versucht, hat ebenso wenig funktioniert.

Also die Ausgabe bei eingebenen Beispiel ist diese:
Code:
!(.*)<\/table>!
Tschuldigung nochmal!

Hmm mit dem DOMDocument kann ich mal heute Abend probieren. Aber eigentlich sollte das ganze ja auch mit preg_match_all gehen. Oder habe ich irgendwo syntaktischen Käse prodoziert?

Nachtrag:
Habe mal fix den Fehler oben beseitigt, damit keine verwirrung beim Lesen auftritt
__________________
"My software never has bugs, it just develops random features."
"Real programmers don't comment. If it was hard to write, it should be hard to understand!"
Positive Bewertungen sind nicht unwillkommen...

Geändert von Paul.Schramenko (18.05.2010 um 10:51 Uhr). Grund: Nachtrag
Paul.Schramenko ist offline  
Alt 18.05.2010, 10:49  
Moderator
 
Benutzerbild von Asipak
 
Registriert seit: 18.07.2005
Beiträge: 4.072
Asipak sorgt für eine eindrucksvolle AtmosphäreAsipak sorgt für eine eindrucksvolle Atmosphäre
Standard

Siehe [edit]
Asipak ist offline  
Alt 18.05.2010, 10:50  
Erfahrener Benutzer
 
Registriert seit: 01.12.2009
Beiträge: 645
PHP-Kenntnisse:
Fortgeschritten
draco88 befindet sich auf einem aufstrebenden Ast
draco88 eine Nachricht über ICQ schicken
Standard

Schau dir am besten mal den Quelltext(von der HTML Ausgabe) an, ich könnt Wetten, da wird der fehlende Text drinne stehen
draco88 ist offline  
Alt 18.05.2010, 10:54  
Erfahrener Benutzer
 
Registriert seit: 15.04.2010
Beiträge: 813
PHP-Kenntnisse:
Fortgeschritten
Paul.Schramenko befindet sich auf einem aufstrebenden Ast
Standard

Doh!
Code:
!<table(.*?)>(.*)<\/table>!
Ok es steht also richtig drin... Hätte ich eigentlich auch selbst drauf kommen müssen. jemand ne Idee warum derr reg. Ausdruck nicht funktioniert?


Vielen Dank für die promte Hilfe!
__________________
"My software never has bugs, it just develops random features."
"Real programmers don't comment. If it was hard to write, it should be hard to understand!"
Positive Bewertungen sind nicht unwillkommen...
Paul.Schramenko ist offline  
Alt 18.05.2010, 10:56  
Moderator
 
Benutzerbild von Asipak
 
Registriert seit: 18.07.2005
Beiträge: 4.072
Asipak sorgt für eine eindrucksvolle AtmosphäreAsipak sorgt für eine eindrucksvolle Atmosphäre
Standard

Schau dir mal den Modifier s an.
Asipak ist offline  
Alt 18.05.2010, 11:13  
Erfahrener Benutzer
 
Registriert seit: 15.04.2010
Beiträge: 813
PHP-Kenntnisse:
Fortgeschritten
Paul.Schramenko befindet sich auf einem aufstrebenden Ast
Standard

PHP-Code:
$start '<table(.*?)>';
$end   '<\/table>';
$pattern '!' $start '((\s|.)*)' $end '!'
geiler Tipp danke.
Nur leider ist dass nicht mein erwartetes Ergebnis, ich bin eigentlich davon ausgegangen, dass die <tr>...</tr> einer Tabelle in einzelnen Array-Elementen auftauchen, stattdessen habe ich alle Tables in einem.
__________________
"My software never has bugs, it just develops random features."
"Real programmers don't comment. If it was hard to write, it should be hard to understand!"
Positive Bewertungen sind nicht unwillkommen...
Paul.Schramenko ist offline  
Alt 18.05.2010, 11:18  
Moderator
 
Benutzerbild von Asipak
 
Registriert seit: 18.07.2005
Beiträge: 4.072
Asipak sorgt für eine eindrucksvolle AtmosphäreAsipak sorgt für eine eindrucksvolle Atmosphäre
Standard

Das habe ich aber nicht mit dem s-Modifier gemeint: http://php.net/manual/de/reference.p....modifiers.php.

Du musst jetzt zusätzlich noch die Gier umkehren. Das kannst du mit dem Modifier U oder einem Fragezeichen hinter deinem Quantifier (*) erreichen.

Eventuell ist für dich auch noch der 4. Parameter von preg_match_all interessant. Dieser erlaubt eine andere Sortierung der Fundstellen.
Asipak ist offline  
Alt 18.05.2010, 17:15  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.990
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Zitat:
Nur leider ist dass nicht mein erwartetes Ergebnis, ich bin eigentlich davon ausgegangen, dass die <tr>...</tr> einer Tabelle in einzelnen Array-Elementen auftauchen,
Quantifizieren und Capturing geleichzeitig funktioniert nicht. Insofern Dein HTML valide ist, sollstest Du auf jeden Fall DOM verwenden.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] while schleife - ausgabe nur wenn Zeile nicht leer fulltilt PHP Tipps 2010 8 25.02.2010 10:29
Ausgabe verschiebt sich - Warum? Rutor HTML, Usability und Barrierefreiheit 9 10.02.2010 21:51
[Erledigt] Array Ausgabe leer flual2000 PHP Tipps 2009 6 05.04.2009 20:35
Smarty + MySQL = immer falsche Ausgabe m0use` PHP Tipps 2006 44 21.11.2008 20:30
Reguläre Ausdruck hat nen Fehler Horst79 PHP Tipps 2008 19 22.09.2008 10:11
falsche ausgabe von numerischen datensatz bei sql-abfrge XraYSoLo PHP Tipps 2006 5 12.09.2006 11:00
Problem mit Ausgabe bzw. Abfrage mit ORDER BY mayer Datenbanken 7 02.07.2006 21:45
Ausgabe wird an die falsche Stelle includet. PHP Tipps 2005-2 6 25.10.2005 13:25
[Erledigt] Falsche Ausgabe bei WHERE Clause Datenbanken 8 07.10.2005 10:18
3 Tabellen verbunden -- Ausgabe in einer Spalte Datenbanken 4 06.09.2005 10:43
PEAR::DB und Smarty limit_query ausgabe leer PHP Tipps 2005 6 11.05.2005 18:42
Warum falsche numerische ausgabe bei date()? PHP Tipps 2005 5 11.03.2005 10:58
Falsche Ausgabe bei for-Schleife PHP Tipps 2005 9 09.03.2005 16:01
Sortierung der Ausgabe PHP-Fortgeschrittene 3 08.10.2004 09:22
preg_match_all? Falsche Ausgabe PHP Tipps 2004 4 28.09.2004 16:44

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
preg_match_all ausgabe, preg_match_all mit einem ausdruck, $ausgabe==\reg\, preg_match_all ausgabe leer, preg_match_all php ausgabe in einer zeile, php array ausgabe falsche stelle, php preg_match \nicht leer\ -ereg -eregi

Alle Zeitangaben in WEZ +2. Es ist jetzt 21:01 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum