| 

.NET C# Java Javascript Exception

0
Also ich habe z.b. einen Text diesen möchte ich gerne in einzelne Wörter aufteilen b.s.p.:
Das ist ein Text "nur zur Veranschaulichung" dieser enthält nichts sinnvolles und soll nur als beispiel dienen. Wie sicher zu sehen ist macht dieser Text keinen sinn, das soll ja auch nur ein „Beispiel“ sein der Text kann unter andrem auch Trenn-
zeichen enthalten!
So aus diesem Text möchte ich nur die Wörter haben wie macht man das mit PHP? Gibt es da eine fertige Funktion?
07.09.2009
Weisstdus 1 1 1
3 Antworten
2
Ja z.b. explode

$str = 'das ist ein test';
$woerter = explode(" ", $str);


Danach steckt in $woerter ein Array, mit den Wörtern nach Leerzeichen getrennt.

str_word_count würde sich jedoch auch anbieten.

grüße
BiX
07.09.2009
BiX 149 1 5
BiX 149 1 5
0
Ja gut das dachte ich ja auch schon sorry hätte ich evtl dazu schreiben sollen.
Hatte s auch schon mit einem RegEx Probiert:
preg_match_all("~A-Za-z{4,}\b~", $string, $matches);

vor A-Z gehört eine offene eckige klammer und nach a-z eine geschlossene!

Damit wollte ich alle Wörter von einer Mindestlänge von 4 Buchstaben erhalten doch nun das Prob dabei, wenn ein Wort in einer klammer ist oder am Ende ein Punk, komme vorhanden ist wird das Wort nicht gefunden.

Nachtrag:
Mir ist noch aufgefallen das umlaute einfach abgeschnitten werde z.b wird aus hölle, lle.
07.09.2009
Weisstdus 1 1 1
0
Du schrobst:
Damit wollte ich alle Wörter von einer Mindestlänge von 4 Buchstaben erhalten doch nun das Prob dabei, wenn ein Wort in einer klammer ist oder am Ende ein Punk, komme vorhanden ist wird das Wort nicht gefunden.

Das geht mit:
...
if(preg_match_all('/\w{4,}/', $text, $m)) {
$words = $m[0];
}
...


UPDATE + + + + + + + + UPDATE

Da auch Trennzeichen erfasst werden sollen
machen wir einen 'creative hack':

...
# Trennzeichen/Zeilenwechsel aus den Worten rauswerfen
function dejunkify($arg) { return preg_replace('/-\s+/', '', $arg); }

# creative hack
if(preg_match_all('/\w{2,}(?:-\s+)?\w{2,}/', $text, $m)) {
$words = array_map('dejunkify', $m[0]);
}
...


Was meinst Du mit "Umlaute weg" Bei mir bleiben sie
drin. Das ist sicher ein Problem der Kodierung
der Eingabedaten.

Viele Grüße

~~~
07.09.2009
Damengummistiefel 377 1 6
Jedoch macht er dann das Trennzeichen falsch, weil dort noch ein Umbruch ist:

Trenn-
zeichen

=

Trenn
zeichen

das ist jedoch nicht korrekt.

Ich war bis jetzt bei:
'/([a-zäöüÄÖÜ-]{4,})+/ims'

Danach klappen die Umlaute und das Trennzeichen, jedoch das mit dem Trennzeichen und dem Umbruch in Verbindung nicht. Ist wohl schon zu spät heute :)
BiX 07.09.2009
Hallo BIX,
ich hatte Dein huptproplem nicht gerafft.
Jetzt müßte es gehen.
Damengummistiefel 08.09.2009

Stelle deine Regex-Frage jetzt!