- Ad -
php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 

 


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!

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 24-05-2005, 21:17
Gagi
 Newbie
Links : Onlinestatus : Gagi ist offline
Registriert seit: May 2005
Beiträge: 11
Gagi ist zur Zeit noch ein unbeschriebenes Blatt
Standard preg_match mit komischen Ergebnissen

Hiho

also ich suche im folgendem html-Fragment

Code:
...
<tr>
					<th colspan="6">Ressourcen</th>
				</tr>
				<tr>
					<td colspan="3">Arbeiter</td>
					<td colspan="3">76.215</td>
				</tr>
				<tr>
					<td colspan="3">verfügbare Arbeitskräfte</td>
					<td colspan="3">1.484</td>
				</tr>
				<tr>
					<td colspan="3">Energie</td>
					<td colspan="3">428.670</td>
				</tr>
				<tr>
					<td colspan="3">Eisen</td>
					<td colspan="3">101.452</td>
				</tr>
				<tr>
					<td colspan="3">Silizium</td>
					<td colspan="3">166.882</td>
				</tr>
				<tr>
					<td colspan="3">Kohlenstoff</td>
					<td colspan="3">26.567</td>
				</tr>
...
ich versuche folgenden php-Code

PHP-Code:
$startcode="%<td";
$endcode="</td>%s";
//for($x=1;$x<20;$x++)
//{
preg_match("$startcode(.*)$endcode"$inhalt$was_raus_kommt);

echo 
"hl: ".$was_raus_kommt[1];
//}
?> 
ich kriege dann dieses Ergebnis:

hl: colspan=3>Arbeiter51.520verfügbare Arbeitskräfte2.618Energie23.736Eisen115.271Silizium108.612Kohlenstoff142.045Wasser14.892Sauerstoff22 .346Wasserstoff273.560 usw.

Meine Frage ist jetzt, wie er dazu kommt, denn ich hab ja den Modifier s gesetzt und wieso schreibt er nicht jedesmal wieder colspan=3 davor ???

wenn ich jetzt den $startcode ein bisschen abänder, sagen wir mal ich häng noch " colspan" hinten hin findet er gar nichts mehr, kann mir das wer erklären ???

thx schomal

cya
Gagi
Mit Zitat antworten
  #2 (permalink)  
Alt 24-05-2005, 21:23
Wurzel
 Master
Links : Onlinestatus : Wurzel ist offline
Registriert seit: Jul 2002
Ort: double-u-upper-valley
Beiträge: 7.477
Wurzel ist zur Zeit noch ein unbeschriebenes Blatt
Standard Re: preg_match mit komischen Ergebnissen

Zitat:
Original geschrieben von Gagi
ich kriege dann dieses Ergebnis
und das stammt aus dem QUELLTEXT ?
__________________
-
Mit Zitat antworten
  #3 (permalink)  
Alt 24-05-2005, 21:29
Gagi
 Newbie
Links : Onlinestatus : Gagi ist offline
Registriert seit: May 2005
Beiträge: 11
Gagi ist zur Zeit noch ein unbeschriebenes Blatt
Standard

es wird dann genau so angezeigt wenn ich die site aufrufe

wenn ichs nicht anders wüsste, würde ich sagen du bist vom Namen her mein Bruder *g*

Geändert von Gagi (24-05-2005 um 21:33 Uhr)
Mit Zitat antworten
  #4 (permalink)  
Alt 24-05-2005, 21:33
Wurzel
 Master
Links : Onlinestatus : Wurzel ist offline
Registriert seit: Jul 2002
Ort: double-u-upper-valley
Beiträge: 7.477
Wurzel ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von Gagi
es wird dann genau so angezeigt wenn ich die site aufrufe
warum schreibe ich quelltext GROSS?

ich möchte nicht wissen, was du ANGEZEIGT bekommst, sondern was im QUELLTEXT steht.
__________________
-
Mit Zitat antworten
  #5 (permalink)  
Alt 24-05-2005, 21:36
Gagi
 Newbie
Links : Onlinestatus : Gagi ist offline
Registriert seit: May 2005
Beiträge: 11
Gagi ist zur Zeit noch ein unbeschriebenes Blatt
Standard

hab doch oben schon geschriebn was im QUELLTEXT steht, ich dachte du beziehst dich auf ERGEBNIS
Mit Zitat antworten
  #6 (permalink)  
Alt 24-05-2005, 21:44
Wurzel
 Master
Links : Onlinestatus : Wurzel ist offline
Registriert seit: Jul 2002
Ort: double-u-upper-valley
Beiträge: 7.477
Wurzel ist zur Zeit noch ein unbeschriebenes Blatt
Standard

komisch. wenn ich deinen code ^^ teste, steht in der AUSGABE
Code:
hl: colspan="3">Arbeiter 76.215 verfügbare Arbeitskräfte 1.484 
Energie 428.670 Eisen 101.452 Silizium 166.882 Kohlenstoff 26.567
und im QUELLTEXT
Code:
hl:  colspan="3">Arbeiter</td>
					<td colspan="3">76.215</td>
				</tr>
				<tr>
					<td colspan="3">verfügbare Arbeitskräfte</td>
					<td colspan="3">1.484</td>
				</tr>
				<tr>
					<td colspan="3">Energie</td>
					<td colspan="3">428.670</td>
				</tr>
				<tr>
					<td colspan="3">Eisen</td>
					<td colspan="3">101.452</td>
				</tr>
				<tr>
					<td colspan="3">Silizium</td>
					<td colspan="3">166.882</td>
				</tr>
				<tr>
					<td colspan="3">Kohlenstoff</td>
					<td colspan="3">26.567
... ich würds ja mal mit preg_match_all() und ungreedy versuchen
__________________
-
Mit Zitat antworten
  #7 (permalink)  
Alt 24-05-2005, 21:47
Gagi
 Newbie
Links : Onlinestatus : Gagi ist offline
Registriert seit: May 2005
Beiträge: 11
Gagi ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Also wenn du jetzt auf die unterschiedlichen werte anspielst, tut mir leid hab was falsches kopiert, aber vom aufbau is es genau gleich, nur die zahlen sind halt anderst

was meinst du mit ungreedy ???

bei preg_match_all krieg ich nur "array" zurück
Mit Zitat antworten
  #8 (permalink)  
Alt 24-05-2005, 21:55
Wurzel
 Master
Links : Onlinestatus : Wurzel ist offline
Registriert seit: Jul 2002
Ort: double-u-upper-valley
Beiträge: 7.477
Wurzel ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von Gagi
Also wenn du jetzt auf die unterschiedlichen werte anspielst, tut mir leid hab was falsches kopiert, aber vom aufbau is es genau gleich, nur die zahlen sind halt anderst
häh?
Zitat:
was meinst du mit ungreedy ???
schau dir die modifier an, "ungreedy" heisst wörtlich ungierig
Zitat:
bei preg_match_all krieg ich nur "array" zurück
ersetze echo durch print_r()

du musst hier schon mitarbeiten. hier haben die wenigsten lust, fertige lösungen auf dem silbertablett zu servieren. in den tutorials findest du auch noch einiges zu regex. schau mal da rein.
__________________
-
Mit Zitat antworten
  #9 (permalink)  
Alt 24-05-2005, 22:20
Gagi
 Newbie
Links : Onlinestatus : Gagi ist offline
Registriert seit: May 2005
Beiträge: 11
Gagi ist zur Zeit noch ein unbeschriebenes Blatt
Standard

wenn du dir die Zahlen vom Quellcod anguckst und die Zahlen von der Ausgabe wirst feststellen dass die anders sind, das hab ich gemeint.

Sorry wusste nicht das es noch mehr gibt, hab in einem Tutorial von euch nur 3 gesehen, darum hab ich gedacht es gibt nicht mehr. Ich werde aber aus der Erklärung von greedy im Handbuch trotzdem nicht schlau, könntest es mir kurz erklären was es bedeutet ???


Also mit print_r krieg ich zwar das "colspan" weg, aber ne wirklich Erklärung dafür warum alles hintereinander kommt obwohl ich s oder u gesetzt habe ist das nicht, hab ich eigentlich den modifier richtig gesetzt ???

thx schonmal
Mit Zitat antworten
  #10 (permalink)  
Alt 24-05-2005, 23:28
Wurzel
 Master
Links : Onlinestatus : Wurzel ist offline
Registriert seit: Jul 2002
Ort: double-u-upper-valley
Beiträge: 7.477
Wurzel ist zur Zeit noch ein unbeschriebenes Blatt
Standard

lass mich raten: du hast den code irgendwo abgepinnt, ohne zu verstehen, was passiert. anyway.

preg_match()/*_all() sind erstmal "gierig", d.h. es wird der grösstmögliche bereich erfasst. im fall von <td> ... </td> werden alle öffnenden und schliessenden tags zwischen dem ersten und letzten treffer ignoriert bzw. umfasst.

"ungreedy" (modifier U) unterdrückt das. das heisst, der kleinstmögl. bereich wird erfasst. während preg_match() nach dem ersten vorkommen aussteigt, packt preg_match_all() alle vorkommen/treffer in ein array.

grob erklärt (bin kein regex-perte).

wenn ich dein beispiel etwas abändere, erhalte ich ein völlig brauchbares ergebnis:
PHP-Code:
<?php
$t 
'<tr>
        <th colspan="6">Ressourcen</th>
        </tr>
        <tr>
            <td colspan="3">Arbeiter</td>
            <td colspan="3">76.215</td>
        </tr>
        <tr>
            <td colspan="3">verfügbare Arbeitskräfte</td>
            <td colspan="3">1.484</td>
        </tr>
        <tr>
            <td colspan="3">Energie</td>
            <td colspan="3">428.670</td>
        </tr>
        <tr>
            <td colspan="3">Eisen</td>
            <td colspan="3">101.452</td>
        </tr>
        <tr>
            <td colspan="3">Silizium</td>
            <td colspan="3">166.882</td>
        </tr>
        <tr>
            <td colspan="3">Kohlenstoff</td>
            <td colspan="3">26.567</td>
        </tr>'
;

$startcode="%<td";
$endcode="</td>%U";

preg_match_all($startcode.'(.*)'.$endcode$t$was_raus_kommt);
echo 
'<pre>';
print_r($was_raus_kommt);
echo 
'</pre>';
?>
mach was draus.
__________________
-
Mit Zitat antworten
  #11 (permalink)  
Alt 24-05-2005, 23:44
Gagi
 Newbie
Links : Onlinestatus : Gagi ist offline
Registriert seit: May 2005
Beiträge: 11
Gagi ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Also erstmal danke, dass du versuchst mir zu helfen

bei deinem Code krieg ich jetzt folgenden Ergebnis:

Ressourcen Arbeiter 76.215 verfügbare Arbeitskräfte 1.484 Energie 428.670 Eisen 101.452 Silizium 166.882 Kohlenstoff 26.567 '; $startcode="%

';
print_r($was_raus_kommt);
echo '

'; ?>

im Prinzip krieg ich auch recht passable Ergebnisse, aber da die Werte danach noch in ne Datenbank sollen, hab ich eben das Problem, das ich se so net weiterverarbeiten kann.

Haben möchte ich eigentlich, dass ich 2 Werte auslese und diese dann in die Datenbank eintrage , damit ich das dann für alle Werte mit einer for-Schleife machen kann.

Was ich einfach nicht verstehe ist warum er nicht Zeilweise danach sucht, was ja eigentlich der Modifier s machen sollte. find das alles sehr vewirrend.

Und nein ich hab den Code nicht abgepinnt, ich weiß wie es funktionieren müsste, aber das tut es leider nicht so wie es soll
Mit Zitat antworten
  #12 (permalink)  
Alt 25-05-2005, 19:43
Gagi
 Newbie
Links : Onlinestatus : Gagi ist offline
Registriert seit: May 2005
Beiträge: 11
Gagi ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Also danke nochmal für die Hilfe, hab meine Fehler gefunden hab den Modifier ungreedy klein geschrieben anstatt groß, hätt ich mir gleich denken können

aber trotzdem danke für die Hilfe
Mit Zitat antworten
  #13 (permalink)  
Alt 26-05-2005, 16:28
Gagi
 Newbie
Links : Onlinestatus : Gagi ist offline
Registriert seit: May 2005
Beiträge: 11
Gagi ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Jetzt brauch ich wohl doch wieder hilfe dazu, es klappt zwar dass alles richtig ausgelsen wird, aber beim 55. Element im Array hört er einfach auf, obwohl es keinen unterschied gibt im HTML code, gibts dafür irgendeine erklärung ????
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
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.

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


PHP News

MariaDB 5.5 veröffentlicht
MariaDB 5.5 veröffentlichtDie freie MySQL-Alternative MariaDB wurde in der stabilen Version 5.5.23 veröffentlicht und soll einige Verbesserungen gegenüber Oracles Communityversion von MySQL mitbringen.

16.04.2012 | Berni

Deutsche Yii Framework Community
Deutsche Yii Framework CommunitySeit dem 19.03.2012 gibt es für die Yii PHP Framework Community ein deutsches Zuhause.

20.03.2012 | dhcomputer

 

Aktuelle PHP Scripte

Advanced Login ansehen Advanced Login

Login-System und Kundenverwaltung, die sich spielend leicht in bestehende Webseiten einbauen lässt und einen enormen Funktionsumfang bietet. Ihre eigene Webseite muss mit Advanced Login nicht umständlich an ein fertiges System angepasst werden.

25.05.2012 Madden | Kategorie: PHP/ Kundenverwaltung
BROM CMS/BelCal 3 ansehen BROM CMS/BelCal 3

Spezielles CMS für Betreiber von Ferienwohnungen. Komplette Seitenerstellung online, Verwaltung mehrerer Objekte, Reservierungssystem mit sofortigem Abgleich im Belegungskalender und vieles mehr bietet dieses Content Management System.

25.05.2012 belcal2 | Kategorie: PHP/ CMS
belbit LiveSupport Script ansehen belbit LiveSupport Script

Schnellen und unkomplizierten Support im LiveSupport-Chat anbieten. Ohne Datenbank und in wenigen Sekunden installiert.

24.05.2012 EichbaumMedia | Kategorie: PHP/ Chat
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 08:50 Uhr.