# Wörter aus String filtern



## BeatJoker (19. Februar 2010)

Hallo,
Also zu meiner Frage.. Ich habe einen String und in diesem habe ich einen Satz... "Hallo lieber User: HansWurst Dein letzter Login war: ...." Dabei bei ist HansWurst variable... Nun würde ich gern aus diesem String den Benutzernamen filtern und in eine Variable speichern... Am besten so das ich Signalwörter nutzen kann... Das "User (.*) Dein" also dass das Wort zwiscen diesen beiden gefiltert wird... Wie mache ich dies?


----------



## kantonix (19. Februar 2010)

Steht der Username immer an vierter Stelle, wenn ja könnte man das so machen:


```
$str = "Hallo lieber User: HansWurst Dein letzter Login war ...";
//hier wird bei jedem Leerzeichen ein neues Array-Element erzeugt:
$str_array = explode(" ",$str);

//also kannst du dann HansWurst so ausgeben
echo $str_array[3];
```


----------



## Yaslaw (19. Februar 2010)

Reguläre Ausdrücke ist der Begriff den du suchst.


```
// das Suchmuster mit Delimiter und Modifer (falls vorhanden) 
$pattern = '/User: ([[:alnum:]]+)/';

// RegEx mit preg_match() auswerten 
preg_match($pattern, $string, $array); 
$user = $array[1];
```

Hier noch eine gute Spielwiese um ein wenig zu üben und testen:
http://www.regex-tester.de/regex.html

Und die Erläuterungen von PHP zu den Patterns
http://de3.php.net/manual/de/reference.pcre.pattern.syntax.php


----------



## BeatJoker (19. Februar 2010)

Danke... Jetzt habe ich noch ein kleines Problem... User können auch Punkte in ihren Benutzernamen nutzen und Zahlen... Ein Nutzer heißt 34.652 wie mache ich das jetzt das es komplett ausgegeben wird nich nut die 34?


----------



## Flex (19. Februar 2010)

Dann erweitern wir den Ausdruck ein wenig.


```
User: ([[:alnum:]\.]+)
```


----------



## Yaslaw (20. Februar 2010)

Felix Jacobi hat gesagt.:


> Dann erweitern wir den Ausdruck ein wenig.
> 
> 
> ```
> ...


Nicht ganz. Ein Punkt ist stellvertretend für alle Zeichen

So sollte es aussehen

```
User: ([[:alnum:]\.]+)
```


----------

