Seite 1 von 1

Wörter aus Text filtern

Verfasst: 13.12.2006, 19:17
von Michael1967
Hallo,

mal eine Frage. Ich möchte alle großgeschriebenen Wörter aus einem Text filtern.

Das klappt so wunderbar –

Code: Alles auswählen

$text = 'dies ist ein Blindtext mit ein paar Geschriebenen Wörtern';
preg_match_all("/[A-Z].[a-z]{4,}/", $text, $hit);
print_r($hit);

Als Ausgabe erhalte ich –

Array ( [0] => Array ( [0] => Blindtext [1] => Geschriebenen [2] => Wörtern ) )

Ich weiß leider nicht, wie ich jetzt an die großgeschriebenen Wörter (getrennt mit einem Komma) ran komme, da dies meine Kenntnisse übersteigt. Hat jemand einen Plan von sowas?

Verfasst:
von

Verfasst: 13.12.2006, 19:27
von SloMo
Verstehe ich richtig, Du willst daraus einen kommagetrennten String machen? Für die Meta-Keywords oder so? Versuche mal:

$ergebnis = implode( ',', $hit[0] );

Verfasst: 13.12.2006, 19:33
von Michael1967
Ja genau, ich möchte die Meta-Tags automatisieren.


Und dann ausgeben mit -

echo"$ergebnis";

Nun kommt -

Blindtext,Geschriebenen,Wörtern

Bravo! Vielen Dank. :D

Und wie läuft das mit den Sonderzeichen? Ist das wichtig?

Verfasst: 13.12.2006, 19:55
von SloMo
> Und wie läuft das mit den Sonderzeichen? Ist das wichtig?

In diesem Fall? So wichtig wie die Meta-Keywords.

Verfasst: 13.12.2006, 19:58
von Michael1967
Schitt, wenn ein ä, ü, ö im Wort ist, dann macht er das - Ferienh, Unterk,


Muss ich bei preg_match_all noch erweitern?

Verfasst: 13.12.2006, 20:15
von Michael1967
Hat sich glaube ich erledig. So geht es -

Code: Alles auswählen

$description = str_replace ( array ( 'ö','ü','ä','Ö','Ü','Ä','.de', '.at', '.com', '.info', '.ch', '.net', '.org', '.br', '.ag','`','ß','---',',','/'), array ( 'oe','ue' ,'ae','Oe','Ue','Ae' ,'', '', '', '', '', '', '', '','','','ss','-','','-'), $description );

Verfasst: 16.12.2006, 02:04
von Michael1967
Und noch eine Frage.

Jetzt habe ich für die Suchbegriffe 200 Zeichen festgelegt. Wenn mehr Zeichen vorhanden sind, dann wird am Ende ja einfach abgeschnitten.

Gibt es eine Möglichkeit, dass nach dem letzten Komma (welches sich irgendwo vor oder nach 200 Zeichen befindet) erst abgeschnitten wird?

Oder kann man auch genau 20 Suchbegriffe ausgeben? Ich habe schon nach einer Lösung gesucht - leider nichts gefunden *heul*

Verfasst: 16.12.2006, 03:51
von Michael1967
Das Kürzen selbst ist ja kein Problem. Aber wenn ich auf 200 Zeichen kürze, dann wird am Schluss ja nur noch Stückwerk angezeigt.

Gibt es da nicht eine Möglichkeit - genau auf 20 Suchbegriffe zu kürzen?

Wenn hiermit mehr als 20 Suchbegriffe ausgegeben werden -

$text = 'dies ist ein Blindtext mit ein paar Geschriebenen Wörtern';
preg_match_all("/[A-Z].[a-z]{4,}/", $text, $hit);
print_r($hit);

Verfasst: 16.12.2006, 10:37
von d0nut
edvsb's Lösung funktioniert doch genau so, wie ich dein anliegen verstehe

es wird die 200ste Stelle gesucht.
Wenn die 200ste Stelle zufälligerweise ein Leerzeichen ist, dann ist Sense.
Ansonsten wird bis zum nächsten Leerzeichen gesucht und dort abgeschnitten.

Keine abgeschnittenen Wörter. Kein "Stückwert"

Die Kürzung auf 20 Suchbegriffe wäre ein anderes Unterfangen.
Dazu lies dir am besten die Doku von https://de.php.net/array_slice durch

Verfasst: 16.12.2006, 14:05
von Michael1967
Okay, vielen Dank. :P