Portal > Foren > PHP > PHP-Programmierung > textfeld mit preg_match_all() durchsuchen
Antwort
 
Themen-Optionen Thema durchsuchen
Alt 11.07.2008, 06:40 Nach oben    #1
Windows Nutzer
 
Benutzerbild von Sourceforge
 
Registriert seit: 30.08.2007
Beiträge: 11
Standard textfeld mit preg_match_all() durchsuchen

hi erst mal und einen wunderschönen guten morgen.

flgende sache. ich schicke per $_POST ein textfeld ab. dieses textfeld soll nach verschiedenen schlüsselwörtern durchsucht werden. der inhalt des textfeldes ist vom aufbau her immer gleich(bis auf ein paar kleinigkeiten die ab und an mal nicht da sind). bisher hab ich das folgendermaßen gemacht bin damit aber nicht wirklich zufrieden.
PHP-Code:
if(isset($_POST['send']) === TRUE AND isset($_REQUEST['action']) == 'read')
{

    
$spio_report_nummmer                            preg_match_all('°\(#(.*)\)°im'$textfield$spio_report_nummer_match);
    
$spio_report_zeit                               preg_match_all('°- ([0-9][0-9].[0-9][0-9].[0-9][0-9][0-9][0-9]) / ([0-9][0-9]:[0-9][0-9]:[0-9][0-9])°im'$textfield$spio_report_zeit_match);
    
$spio_report_name                               preg_match_all('°Planetenname:(.*)\[ Klasse°im'$textfield$spio_report_name_match);
    
$spio_report_koordinaten                        preg_match_all('°Koordinaten:(.*:((.*:((.*)°im'$textfield$spio_report_koordinaten_match); 
    
$spio_report_besitzer                           preg_match_all('°Besitzer:(.*)°im'$textfield$spio_report_besitzer_match);
    
$spio_report_durchmesser                        preg_match_all('°Durchmesser:(.*)km°im'$textfield$spio_report_durchmesser_match);
    
$spio_report_groesse                            preg_match_all('°Groesse:(.*)°im'$textfield$spio_report_groesse_match);
    
$spio_report_kategorie                          preg_match_all('°Kategorie:(.*)°'$textfield$spio_report_kategorie_match);
    
$spio_report_temperatur                         preg_match_all('°Temperatur:(.*)°'$textfield$spio_report_temperatur_match);
    
$spio_report_eisen                              preg_match_all('°Eisen:(.*)°'$textfield$spio_report_eisen_match);
    
$spio_report_lutinum                            preg_match_all('°Lutinum:(.*)°'$textfield$spio_report_lutinum_match);
    
$spio_report_wasser                             preg_match_all('°Wasser:(.*)°'$textfield$spio_report_wasser_match);
    
$spio_report_wasserstoff                        preg_match_all('°Wasserstoff:(.*)°'$textfield$spio_report_wasserstoff_match);
    
$spio_report_kommandozentrale                   preg_match_all('°Kommandozentrale(.*)°'$textfield$spio_report_kommandozentrale_match);
    
$spio_report_forschungszentrum                  preg_match_all('°Forschungszentrum(.*)°'$textfield$spio_report_forschungszentrum_match);
    
$spio_report_eisenmine                          preg_match_all('°Eisenmine(.*)°'$textfield$spio_report_eisenmine_match);
    
$spio_report_lutinumraffinerie                  preg_match_all('°Lutinumraffinerie(.*)°'$textfield$spio_report_lutinumraffinerie_match);
    
$spio_report_bohrturm                           preg_match_all('°Bohrturm(.*)°'$textfield$spio_report_bohrturm_match);
    
$spio_report_chemiefabrik                       preg_match_all('°Chemiefabrik(.*)°'$textfield$spio_report_chemiefabrik_match);
    
$spio_report_erweiterte_chemiefabrik            preg_match_all('°Erweiterte Chemiefabrik(.*)°'$textfield$spio_report_erweiterte_chemiefabrik_match);
    
$spio_report_eisenspeicher                      preg_match_all('°Eisenspeicher(.*)°'$textfield$spio_report_eisenspeicher_match);
    
$spio_report_lutinumspeicher                    preg_match_all('°Lutinumspeicher(.*)°'$textfield$spio_report_lutinumspeicher_match);
    
$spio_report_wasserspeicher                     preg_match_all('°Wasserspeicher(.*)°'$textfield$spio_report_wasserspeicher_match);
    
$spio_report_wasserstoffspeicher                preg_match_all('°Wasserstoffspeicher(.*)°'$textfield$spio_report_wasserstoffspeicher_match);
    
$spio_report_schiffsfabrik                      preg_match_all('°Schiffsfabrik(.*)°'$textfield$spio_report_schiffsfabrik_match);
    
$spio_report_orbitale_verteidigungsstation      preg_match_all('°Orbitale Verteidigungsstation(.*)°'$textfield$spio_report_orbitale_verteidigungsstation_match);
    
$spio_report_recyclingzentrum                   preg_match_all('°Recyclingzentrum(.*)°'$textfield$spio_report_recyclingzentrum_match);
    
$spio_report_planetarer_schild                  preg_match_all('°Planetarer Schild(.*)°'$textfield$spio_report_planetarer_schild_match);
    
$spio_report_fusionsreaktor                     preg_match_all('°Fusionsreaktor(.*)°'$textfield$spio_report_fusionsreaktor_match);
    
$spio_report_ringweltgenerator                  preg_match_all('°Ringweltgenerator(.*)°'$textfield$spio_report_ringweltgenerator_match);
    
$spio_report_verbrennungsantrieb                preg_match_all('°Verbrennungsantrieb(.*)°'$textfield$spio_report_verbrennungsantrieb_match);
    
$spio_report_ionenantrieb                       preg_match_all('°Ionenantrieb(.*)°'$textfield$spio_report_ionenantrieb_match);
    
$spio_report_raumkruemmungsantrieb              preg_match_all('°Raumkrümmungsantrieb(.*)°'$textfield$spio_report_raumkruemmungsantrieb_match);
    
$spio_report_ionisation                         preg_match_all('°Ionisation(.*)°'$textfield$spio_report_ionisation_match);
    
$spio_report_energiebuendelung                  preg_match_all('°Energiebündelung(.*)°'$textfield$spio_report_energiebuendelung_match);
    
$spio_report_explosivgeschosse                  preg_match_all('°Explosivgeschosse(.*)°'$textfield$spio_report_explosivgeschosse_match);
    
$spio_report_spionagetechnologie                preg_match_all('°Spionagetechnologie(.*)°'$textfield$spio_report_spionagetechnologie_match);
    
$spio_report_erweiterte_schiffspanzerung        preg_match_all('°Erweiterte Schiffspanzerung(.*)°'$textfield$spio_report_erweiterte_schiffspanzerung_match);
    
$spio_report_erhoehte_ladekapazitaet            preg_match_all('°Erhöhte Ladekapazität(.*)°'$textfield$spio_report_erhoehte_ladekapazitaet_match);
    
$spio_report_nano_technologie                   preg_match_all('°Nano Technologie(.*)°'$textfield$spio_report_nano_technologie_match);
    
$spio_report_erweiterte_schiffstechnologien     preg_match_all('°Erweiterte Schiffstechnologien(.*)°'$textfield$spio_report_erweiterte_schiffstechnologien_match);
    
$spio_report_ringwelt_technologie               preg_match_all('°Ringwelt Technologie(.*)°'$textfield$spio_report_ringwelt_technologie_match);
    
$spio_report_planeten_verwaltung                preg_match_all('°Planeten Verwaltung(.*)°'$textfield$spio_report_planeten_verwaltung_match);
    
$spio_report_subraum_kommunikation              preg_match_all('°Subraum Kommunikation(.*)°'$textfield$spio_report_subraum_kommunikation_match);

    
$spio_report_zeit_match1                        explode('.'$spio_report_zeit_match[1][0]);
    
$spio_report_zeit_match1                        $spio_report_zeit_match1[2].'-'.$spio_report_zeit_match1[1].'-'.$spio_report_zeit_match1[0];
    
/**
     * hier kommt dann noch ein mysql_query der dann das ergebnis bzw variablen inhalte in die db schreibt inclusive noch ein paar sachen punkto fehler ausgaben etc
     */
    
exit();

jetzt meine frage...wie könnte man das geschickter regeln??? per foreach() ?
die richtigen ergbnisse liefert er mir ja. quasi das was ich brauche. wenn etwas nicht da ist dann haut der mir nen notice raus (undifined ofset in line...) aber den kann man ja abfangen iss ja net so das ding

bzw einfach am kopf der datei error_reporting(0); setzen. iss zwar unsauber aber geht auch *ggg*

in diesem sinne einen schönne freitag morgen
__________________
soo long...

//*Linux is like a wigwam, no gates, no windows and an Apache inside...*//


Gutta cavat lapidem, non vi sed saepe cadendo.
Patriae inserviendo consumer.

Unterwerfung ist ein Geschenk, geboren aus der Staerke, genaehrt durch Vertrauen, erhalten durch Respekt und Achtung. Wenn das Wort nicht schlaegt, dann schlaegt auch nicht der Stock! (Sokrates)

Geändert von Sourceforge (11.07.2008 um 06:43 Uhr).
Sourceforge ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 11.07.2008, 12:04 Nach oben    #2
Lutz
 
Benutzerbild von MrNiceGuy
 
Registriert seit: 14.08.2005
Ort: Nienburg / Weser
Beiträge: 684
Standard

Folgendes sollte es eigentlich tun:

PHP-Code:
$arrayRegEx = array ('nummer'      => '°\(#(.*)\)°im',
                     
'zeit'        => '°- ([0-9][0-9].[0-9][0-9].[0-9][0-9][0-9][0-9]) / ([0-9][0-9]:[0-9][0-9]:[0-9][0-9])°im',
                     
'name'        => '°Planetenname:(.*)\[ Klasse°im',
                     
'koordinaten' => '°Koordinaten:(.*:((.*:((.*)°im',
                     
'besitzer'    => '°Besitzer:(.*)°im',
                     
'durchmesser' => '°Durchmesser:(.*)km°im'
                     
/* etc */
                     
);

if (isset(
$_POST['send']) === TRUE
AND isset($_REQUEST['action']) == 'read'
    
)
{
  foreach (
$arrayRegEx AS $stringVariableName => $stringRegEx)
  {
    
$stringReport 'spio_report_'.$stringVariableName;
    
$stringMatch  $stringReport.'_match';

    $
$stringReport preg_match_all ($stringRegEx,
                                     
$textfeld,
                                     $
$stringMatch
                                     
);
  }

  
$spio_report_zeit_match1 explode('.'$spio_report_zeit_match[1][0]);
  
$spio_report_zeit_match1 $spio_report_zeit_match1[2].'-'.$spio_report_zeit_match1[1].'-'.$spio_report_zeit_match1[0];
  
/**
   * hier kommt dann noch ein mysql_query der dann das ergebnis bzw variablen inhalte in die db schreibt inclusive noch ein paar sachen punkto fehler ausgaben etc
   */
  
exit();

Ich gebe zwar keine Garantie, aber eigentlich sollte das so hinhauen. Allerdings solltest du dir nochmal das Thema RegEx anschauen, wenn ich sehe, wie dein RegEx zum Finden der Zeit aussieht...

Btw: Pass auf, ob das, was du da machst nicht in den AGBs des Spiels verboten ist!
__________________
Paradox ist, wenn jemand für seinen Alkoholkonsum geradestehen soll
MrNiceGuy ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 11.07.2008, 13:33 Nach oben    #3
Jann Hendrik Bekaan
 
Benutzerbild von Jann Hendrik
 
Registriert seit: 02.12.2004
Ort: Wildeshausen
Beiträge: 2.217
Standard

Zitat:
Zitat von MrNiceGuy Beitrag anzeigen
Btw: Pass auf, ob das, was du da machst nicht in den AGBs des Spiels verboten ist!
Nicht, wenn er das Spiel programmiert....
__________________

Umfragen:
bitte beachten: Vorschläge für künftige Umfragen
Woher weißt du vom developers-guide?

Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Schreibe ein Tutorial und beschreibe, wie es geht, was nicht klappt, wo man aufpassen muss usw.
Danke!
Jann Hendrik ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 11.07.2008, 15:28 Nach oben    #4
Lutz
 
Benutzerbild von MrNiceGuy
 
Registriert seit: 14.08.2005
Ort: Nienburg / Weser
Beiträge: 684
Standard

Ob er dann eine solche Frage stellen würde, wenn er ein ganzes Browsergame schreiben kann?
__________________
Paradox ist, wenn jemand für seinen Alkoholkonsum geradestehen soll
MrNiceGuy ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 11.07.2008, 18:08 Nach oben    #5
Windows Nutzer
 
Benutzerbild von Sourceforge
 
Registriert seit: 30.08.2007
Beiträge: 11
Standard

vorm kopf klatsch.....ich sollte mehr schlafen und weniger kaffee trinken
Zitat:
Zitat von MrNiceGuy Beitrag anzeigen
...Allerdings solltest du dir nochmal das Thema RegEx anschauen, wenn ich sehe, wie dein RegEx zum Finden der Zeit aussieht...

Btw: Pass auf, ob das, was du da machst nicht in den AGBs des Spiels verboten ist!
ich HASSE regex.....aber der iss einfach und tut das was ich will *ggg* muss ja das rad net neu erfinden. aber mal schaun....
nee iss net verboten. hab extra nachgefragt.

Zitat:
Zitat von Jann Hendrik Beitrag anzeigen
Zitat:
Zitat von MrNiceGuy Beitrag anzeigen
Btw: Pass auf, ob das, was du da machst nicht in den AGBs des Spiels verboten ist!
Nicht, wenn er das Spiel programmiert....
würde ich gerne aber kaum zeit dafür *ggg* ausserdem iss das schon fertig.

Zitat:
Zitat von MrNiceGuy Beitrag anzeigen
Ob er dann eine solche Frage stellen würde, wenn er ein ganzes Browsergame schreiben kann?
jap. kennst mich doch oder??? manchmal sieht man(n) den wald vor lauter bäumen nicht. aber danke die oh du großer php guru..*fg*
__________________
soo long...

//*Linux is like a wigwam, no gates, no windows and an Apache inside...*//


Gutta cavat lapidem, non vi sed saepe cadendo.
Patriae inserviendo consumer.

Unterwerfung ist ein Geschenk, geboren aus der Staerke, genaehrt durch Vertrauen, erhalten durch Respekt und Achtung. Wenn das Wort nicht schlaegt, dann schlaegt auch nicht der Stock! (Sokrates)
Sourceforge ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche

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 aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Eclipse PDT] PHP-Functions durchsuchen Ben Eclipse 7 25.07.2008 14:06
Cache leeren um mit file Dateien zu durchsuchen Tryzero PHP-Programmierung 12 12.03.2007 10:13
(PHP)Editor, der mehrere Dateien gleichzeitig durchsuchen kann Chr!s Gesuche 8 17.03.2006 19:55
Textfeld ausgabe. raZed Desktop-Applikationen und Grafik 49 08.05.2005 01:08
Array nach werd durchsuchen Macklaud Allgemeine Java-Programmierung 26 14.02.2005 18:19


Alle Zeitangaben in WEZ +2. Es ist jetzt 14:15 Uhr.


Powered by vBulletin® Version 3.7.3 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

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 44