Wörter eines Textes ermitteln
depp
- php
moin
mittels preg_split möchte ich alle wörter eines textes ermitteln.
als trennzeichen bei split soll jedes zeichen verwendet werden, was kein buchstabe ist.
dann sag ich schonmal danke
echo $begrüßung;
mittels preg_split möchte ich alle wörter eines textes ermitteln.
als trennzeichen bei split soll jedes zeichen verwendet werden, was kein buchstabe ist.
Dann mach das doch. Wobei hast du Probleme?
Es gibt eine Zeichenklasse, die auf Nicht-Wort-Zeichen passt: \W und eine, die auf "word boundary" passt: \b.
echo "$verabschiedung $name";
Hi,
mittels preg_split möchte ich alle wörter eines textes ermitteln.
als trennzeichen bei split soll jedes zeichen verwendet werden, was kein buchstabe ist.
Allgemein ist ein Negation als Bedingung nur schwer zu implementieren, nicht selten sogar gar nicht. "Alles, was kein Buchstabe ist" ist so eine Negation.
Du möchtest also mit preg.* alle Worte finden. "Wort" ist hier definiert als eine ununterbrochene Reihe von Buchstaben (Worte mit Bindestrich fallen dann natürlich raus). Der passende Ausdruck dafür ist '\w'. Dieser Ausdruck ist jedoch Locale-abhängig.
setlocale (LC_ALL, 'de_DE');
$match = preg_match("/[[:alpha:]]+/", $string);
Hier schließt "[:alpha:]" auch Umlaute und das 'ß' ein.
Der preg-Modifier '/u' schaltet Unicode Unterstützung ein.
$match = preg_match("/[[:alpha:]]+/u", $string);
Das funktioniert hier nicht (scheint wohl nur für explizit gelistete UTF8-Zeichen im Suchmuster zu gelten (z.B. /АБВабв/) und schaltet nicht alles um), könnte jedoch hiermit funktionieren
setlocale (LC_ALL, 'UTF-8');
$match = preg_match("/[[:alpha:]]+/", $string);
Um alle Worte zu finden wäre also z.B. sowas möglich:
$string = "123 eins zwei drei äöüÄÖÜß АБВабв";
setlocale (LC_ALL, 'UTF-8');
$match = preg_match_all("/[[:alpha:]]+/", $string, $list);
print_r($list);
Aber das geht mit Sicherheit auch geschickter.
so short
Christoph Zurnieden