RegEx zweiwort Kombinationen
Michael
- php
0 wahsaga0 Michael0 seth_not@home
Hallo, na wie gehts der lieben Community so?
Ich habe mal wieder eine kleine Frage, ich bin auf der Suche nachen einem regex der mir alle zweiwort Kombinationen aus einem String liefert.
Ich habs auch schon selbst probiert, soweit bin ich:
$text = 'eins zwei drei';
preg_match_all('#(\S+\s{1}\S+)#ism', $text, $arr_text);
Da gibt es nur ein kleines Problem. Als Ergebnis erhalte ich ein Array mit:
'eins zwei'
Ich möchte aber auch 'zwei drei'
Das Ergebniss soll dann ein Array mit zwei und nicht einem Element sein. Die Elemente sollen also sein: 'eins zwei' und 'zwei drei'.
Kann mir da jemand von euch weiter helfen?
Danke.
Michi
hi,
Da gibt es nur ein kleines Problem. Als Ergebnis erhalte ich ein Array mit:
'eins zwei'
Ich möchte aber auch 'zwei drei'
Dann müsste der RegEx ja von einem Treffer aus wieder "nach hinten" schauen - ich weiss nicht, ob das trivial umsetzbar ist.
Wäre es da nicht vielleicht sinnvoller, einfach nur zu splitten, so dass du ein Array mit Einzelworten erhältst - und dann beim Durchlaufen dieses Arrays jeweils Element i und Element i+1 zusammen zu betrachten ...?
gruß,
wahsaga
Wäre es da nicht vielleicht sinnvoller, einfach nur zu splitten, so dass du ein Array mit Einzelworten erhältst - und dann beim Durchlaufen dieses Arrays jeweils Element i und Element i+1 zusammen zu betrachten ...?
gruß,
wahsaga
Okay, das ist mal eine gute Idee, manchmal fixiere ich mich zu sehr auf einen Lösungsweg. Danke.
gudn tach!
Da gibt es nur ein kleines Problem. Als Ergebnis erhalte ich ein Array mit:
'eins zwei'
Ich möchte aber auch 'zwei drei'Dann müsste der RegEx ja von einem Treffer aus wieder "nach hinten" schauen - ich weiss nicht, ob das trivial umsetzbar ist.
<?php
$text = 'eins zwei drei vier fuenf';
preg_match_all('#(\b[a-z]+)(?=(\s[a-z]+\b))#ism', $text, $arr_text);
// bloss zur anzeige:
for($i=count($arr_text[1]); $i>=0; --$i)
echo $arr_text[1][$i],$arr_text[2][$i],"\n";
?>
Wäre es da nicht vielleicht sinnvoller, einfach nur zu splitten, so dass du ein Array mit Einzelworten erhältst - und dann beim Durchlaufen dieses Arrays jeweils Element i und Element i+1 zusammen zu betrachten ...?
u.u. ist beim splitten dennoch wieder den einsatz von regexp von vorteil:
also sowas wie
preg_split('/\b\s\b/', $str);
oder
preg_split('/(?<=[a-z])\s(?=[a-z])/', $str);
z.b. falls in "eins zwei, drei" das komma den fund "zwei drei" verhindern soll.
prost
seth