php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 19.05.2005, 13:37  
Gast
 
Beiträge: n/a
Standard Regulärer Ausdruck

So, jetzt habe ich auch mal ein Problem.
1. Problem:
Ich bin mir schon nicht sicher, in welches Forum ich das am besten schreiben soll.
2. Problem:
Da ich mit regulären Ausdrücken schon immer auf Kriegsfuß stand, komme ich jetzt im Moment einfach nicht weiter.

Ich habe eine Liste (Array) mit Strings, z.B.

meyer, *, m*, schmitt, *mit*

Weiterhin habe ich einen String, nehmen wir mal "schmitt". Jetzt muss ich untersuchen, welche Pattern passen. In dem Falle wäre

meyer liefert false
* liefert true
m* liefert false
schmitt liefert true
*mit* liefert liefert true

Mit dem String meyer sollte das rauskommen:

meyer liefert true
* liefert true
m* liefert true
schmitt liefert false
*mit* liefert liefert false
PHP-Code:
<?
   $data 
= array("meyer""*""m*""schmitt""*mit*");

   
$string "schmitt";

   foreach (
$data as $value)
   {

       
// Hier müsste jetzt der Check rein
       
$result = ????????????

       echo 
"$value ergibt mit $string: $result;
   }
?>
Da ich ja hier schon gelesen habe, dass es hier Spezialisten gibt, die mit RegExps keine Problem haben, hoffe ich mal, dass mir jemand helfen kann.

Danke und Gruß
phpfan
 
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 19.05.2005, 13:42  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

da ich grad im aufbruch zur mittagspause bin nur kurz (danach ausführlciher):

hmmhmm wie wärs einfach in den strings das * durch (.+?) zu ersetzen

und das dann als regex zu benutzen?
davor ein
#^ und dahinter ein %#smi

bei den modifiern musste halt mal schauen was du willst und was nicht, inwieweit groß und kleinschreibung relevant ist, zeilenumbrüche vorkommen können etc
robo47 ist offline  
Alt 19.05.2005, 13:59  
Gast
 
Beiträge: n/a
Standard

Groß- und Kleinbuchstaben muss man nicht unterscheiden. Im Array und im String stehen genau die Werte, wie sie verglichen werden müssen. Es kann also nicht vorkommen, dass "Schmitt" im Array steht und der String den Wert "schmitt" hat.

Zeilenumbrüche können auch nicht vorkommen.

Schon mal Danke und Gruß
phpfan
 
Alt 19.05.2005, 14:17  
Erfahrener Benutzer
 
Registriert seit: 29.10.2004
Beiträge: 1.781
derHund
Standard

na, robo47 schreibts doch schon, du fauler sack 3500 posts und keine lust sich in regexp reinzuarbeiten ^^.

gerade bei diesem simplen beispiel.
PHP-Code:
  $data = array("meyer""*""m*""schmitt""*mit*");

  
$string "schmitt";
  foreach (
$data as $value) {
    
$result preg_match('#^'.str_replace('*''.+'$value).'$#i'$string);
    echo 
$value.' ergibt mit '.$string.': '.($result 'ja' 'nee').'
'
;
  } 
s brauchst du nicht, m auch nicht, weitere modifier auch nicht. falls dein stern auch für kein zeichen stehen kann, mußt du im string-replace das + noch durch einen * austauschen.

edit: und hier noch ausführlich ...

i steht für ignore case (ausgedacht), es ignoriert aber groß/kleinschreibung, s stände dafür, daß der punkt auch auf zeilenumbrüche zuträfe, m stände dafür, daß bei mehrzeiligen zieltext die assertions ^ und $ nur pro zeile, und nicht wie üblich, auf den gesamten text zuträfen.

der punkt steht für beliebiges zeichen, * für mindestens keine, + für mindestens eine wiederholung. die quantifier (*, +) beziehen sich immer auf den davorstehenden ausdruck, steht dort keiner => fehler: nothin to repeat

^ und $ (anfang/ende des textes), sogenannte assertions (behauptungen), legen etwas fest, ohne selbst im ergebnis platz zu belegen ...
__________________
derHund ist offline  
Alt 19.05.2005, 14:53  
Gast
 
Beiträge: n/a
Standard

Tausend Dank, funktioniert perfekt. Und irgendwann werde ich mich auch in regexp reinarbeiten.

Gruß
phpfan
 
Alt 19.05.2005, 15:05  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

och meno, schon gelöst, da kommt man nach ner dicken pizza zurück und blub :P

mfg
robo47
robo47 ist offline  
Alt 19.05.2005, 15:56  
Gast
 
Beiträge: n/a
Standard

@robo47
Nicht traurig sein, wenn du mir unbedingt einen Tipp geben willst, dann poste mir doch einfach einen Link zu einem guten Tutorial zu RegExp. (Wenn nicht, auch nicht schlimm, denn ich kann ja schon google bedienen. )

Gruß
phpfan
 
Alt 19.05.2005, 16:02  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

also ich habs hiermit gelernt:

http://tut.php-q.net/regex.html

hab mich da so gute 2 stunden davorgehockt und dann hab ich das gerraft gehabt wie es vom aufbau her funktioniert und meine basis zu dem zeitpunkt im thema regex war <= 0 :P (ca 1/2 jahr her)
robo47 ist offline  
Alt 19.05.2005, 16:54  
Erfahrener Benutzer
 
Registriert seit: 02.04.2008
Beiträge: 2.603
Corvin befindet sich auf einem aufstrebenden Ast
Standard

Ich empfehle dieses Tutorial:
http://www.regenechsen.de/regex_de/regex_1_de.html
Corvin ist offline  
Alt 19.05.2005, 17:19  
Gast
 
Beiträge: n/a
Standard

Eben gefunden (kannte ich noch nicht):

http://www.tele-task.de/player/embed...en&lecture=194
 
 


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] leeres Klammernpaar nach einem Ausdruck frozen fire PHP Tipps 2008 8 04.07.2008 20:13
Regulärer Ausdruck für Preis (float) Ticos PHP Tipps 2007 13 06.03.2007 20:21
Regulären Ausdruck Übersetzen (preg_match) mAy^daY PHP Tipps 2007 11 04.01.2007 14:00
regulärer ausdruck farant PHP Tipps 2006 3 05.10.2006 12:19
Logischer Ausdruck aus DB überprüfen c!w PHP Tipps 2006 15 12.09.2006 13:36
Regulärer Ausdruck um <> zu entfernen innerhalb von XM becks123 PHP Tipps 2006 25 16.05.2006 15:06
Mit if Abfrage innerhalb eines strings einen Ausdruck suchen tinchen PHP Tipps 2006 4 11.04.2006 10:18
regulärer ausdruck tomson PHP Tipps 2006 11 03.02.2006 09:58
Regul�rer Ausdruck PHP Tipps 2006 3 01.02.2006 19:50
Regulärer Ausdruck: Ping-Zeiten speichern mAy^daY Server, Hosting und Workstations 9 12.01.2006 19:51
Problem mit regul�rem Ausdruck BastianX75 PHP Tipps 2007 5 14.12.2005 14:38
[Erledigt] Regulärer Ausdruck HILFE!! PHP-Fortgeschrittene 6 22.07.2005 16:39
Regulärer Ausdruck mit Negation? PHP-Fortgeschrittene 23 21.07.2005 09:01
Browser skaliert den Ausdruck? HTML, Usability und Barrierefreiheit 3 14.09.2004 19:04
[Erledigt] Regulärer Ausdruck für E-Mail Adressen PHP Tipps 2004 4 05.08.2004 10:36


Alle Zeitangaben in WEZ +2. Es ist jetzt 13:58 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

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.