SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Websites optimieren für Google & Co.

Websites optimieren für Google & Co. zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > PHP für Fortgeschrittene und Experten
Hilfe Community Kalender Heutige Beiträge Suchen

PHP für Fortgeschrittene und Experten Fortgeschrittene und Experten können hier über ihre Probleme und Bedenken talken

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 17.02.2004, 16:44:30
Wauzy Wauzy ist offline
Anfänger
 
Registriert seit: Sep 2002
Beiträge: 84
Regulären Ausdruck öfter auf einen String anwenden

Hallo

Ich möchte einen bestimmten Regulären Ausdruck "über einen String laufen lassen" und dabei soll er mir halt immer die gefundenen Sachen speichern.

Ich kenne das leider nur aus Perl, da würde es mit meiner momentanen Methode gehen, in PHP geht es so aber nicht.

Währe nett wenn mir einer die entsprechende PHP Syntax verraten würde. (In Perl müßte hinter den Reg. Ausdruck noch ein 'g' für global, das Perl sich merkt wo es den Ausdruck gefunden hat und danach weiter macht.

Hier mal mein Code:
PHP-Code:
<?
$string="01012004_1=11_2&01012004_2=11_2&01012004_3=11_3&01012004_4=11_4&02012004_1=12_1&02012004_2=12_2&02012004_3=12_3&02012004_4=12_4&03012004_1=13_1&03012004_2=13_2&03012004_3=&03012004_4=&04012004_1=14_1&04012004_2=14_2&04012004_3=&04012004_4=&05012004_1=&05012004_2=&050.......
.......
12004_3=&05012004_4=&06012004_1=&06012004_2=&06012004_3=&06012004_4=&07012004_1=17_1&07012004_2=&07012004_3=&07012004_4=&08012004_1=&08012004_2=&08012004_3=&08012004_4=&09012004_1=&09012004_2=&09012004_3=&09012004_4=&10012004_1=&10012004_2=&10012004_3=&10012004_4=&11012004_129012004_3=&29012004_4=&30012004_1=&30012004_2=&30012004_3=&30012004_4=&31012004_1=&31012004_2=&31012004_3=&31012004_4=&Submit=Eintragen";

$regex="/(d{2})(d{2})(d{4})_d{1}=(d{1,2})/";


if (preg_match($regex,$string,$matche)){
$tag[]=$matche[1];
$monat[]=$matche[2];
$jahr[]=$matche[3];
$apot_id[]=$matche[4];
}
for ($i=0;$i<count($tag);$i++){
echo "Eintrag $i:<br><br>";
echo "Tag:".$tag[$i]."<br>";
echo "Monat:".$monat[$i]."<br>";
echo "Jahr:".$jahr[$i]."<br>";
echo "apot_id:".$apot_id[$i]."<br>";
echo "<hr>";
}
?>
Die Punkte sind natürlich hier nur damit nicht alles von dem String bedeckt ist.

Die Ausgabe habe ich nur zum testen hinten dran gehängt.
Nur mit if anstatt des while geht es, aber damit finde ich logischerweise nur die ersten matches.

MFG
Schnaps
Mit Zitat antworten
  #2  
Alt 17.02.2004, 16:53:07
Benutzerbild von Yzerman
Yzerman Yzerman ist offline
Member
 
Registriert seit: Dec 2002
Ort: Soest
Beiträge: 623
Yzerman eine Nachricht über ICQ schicken
preg_match_all ist die Funktion, die Du suchst.
Liefert Dir in einem zweidimensionalen Array alle Trefferergebnisse zurück.
__________________
The internet is full of answers, even to never asked questions!
Mit Zitat antworten
  #3  
Alt 17.02.2004, 17:03:17
Wauzy Wauzy ist offline
Anfänger
 
Registriert seit: Sep 2002
Beiträge: 84
Danach habe ich auch im manual geschaut,
und damit folgenden Code zusammen gebaut.

PHP-Code:
$regex="/(d{2})(d{2})(d{4})_d{1}=(d{1,2})/";
preg_match_all($regex,$string,$matche,PREG_SET_ORDER);


for (
$i=0;$i<count($tag);$i++){
echo 
"Eintrag $i:<br><br>";
echo 
"Tag:".$matche[$i][1]."<br>";
echo 
"Monat:".$matche[$i][2]."<br>";
echo 
"Jahr:".$matche[$i][3]."<br>";
echo 
"apot_id:".$matche[$i][4]."<br>";
echo 
"<hr>";

Der liefert aber leider keine Ausgabe.

Wo ist denn da der Fehler
Mit Zitat antworten
  #4  
Alt 17.02.2004, 17:06:47
Benutzerbild von Yzerman
Yzerman Yzerman ist offline
Member
 
Registriert seit: Dec 2002
Ort: Soest
Beiträge: 623
Yzerman eine Nachricht über ICQ schicken
Deine RegEx ist auch nicht ganz richtig, du musst die 'd' mit Backslash escapen!
__________________
The internet is full of answers, even to never asked questions!
Mit Zitat antworten
  #5  
Alt 17.02.2004, 17:08:05
Wauzy Wauzy ist offline
Anfänger
 
Registriert seit: Sep 2002
Beiträge: 84
Zitat:
Original geschrieben von Yzerman
Deine RegEx ist auch nicht ganz richtig, du musst die 'd' mit Backslash escapen!
Hab ich , das Board hat sie wohl geschluckt!




hab den fehler!!!!!!!!!!!

Der RegExp war schon richtig.

(Aber ich hatte vergessen in der Ausgabe Schleife das Array zu ändern)

Danke für den Tip mit preg_match_all

MFG
Wauzy

Geändert von Wauzy (17.02.2004 um 17:12:06 Uhr)
Mit Zitat antworten
  #6  
Alt 17.02.2004, 17:17:00
Benutzerbild von Yzerman
Yzerman Yzerman ist offline
Member
 
Registriert seit: Dec 2002
Ort: Soest
Beiträge: 623
Yzerman eine Nachricht über ICQ schicken
Ah ja, stimmt, den Fehler kenne ich auch.
Daher nehme ich lieber das Code-Tag, da gehen Backslashes.
Naja, schön, dass es jetzt läuft.
__________________
The internet is full of answers, even to never asked questions!
Mit Zitat antworten
Antwort


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

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 aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 03:52:44 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt