Mailinglisten-Archive |
Sascha Emondts wrote:
<snip/>
>>>$keywords = array();
>>>$words = explode(" ", $text);
>>>foreach ($words AS $word) {
>>> $firstchar = substr($word, 0, 1);
>>> if (strToUpper($firstchar) == $firstchar) {
>>> $keywords[] = $word;
>>> }
>>>}
>
>
<snip/>
>
> die Anforderung "alle einmal vorkommenden" ist hier noch nicht bedient.
> Könnte man über einen Wortzähler im Array machen:
Stimmt, das habe ich überlesen. Deine Lösung ist allerdings ein wenig
zu Resourcen intensiv. (Ist IMO nicht sinnvoll wegen der Laufzeit).
$keyword_in = array();
$keywords = array();
$words = explode(" ", $text);
foreach ($words AS $word) {
$firstchar = substr($word, 0, 1);
if (strToUpper($firstchar) == $firstchar) {
if (!isset($keyword_in[$word])) {
$keyword_in[$word] = true;
$keywords[] = $word;
}
}
}
unset($keyword_in);
In diesem Fall wird in dem Array $keyword_in einfach nur einmal das
gefundene Substantiv-Wort als Schlüssel gesetzt. Sollte es später ein
zweites Mal im String vorkommen, wird das durch die if (isset())
Bedingung erkannt und nicht nochmals zu dem Array $keywords hinzugefügt.
Das ist weit weniger aufwendig als die Lösung mittels *sort() Funktionen
zu basteln, da hier das Array nicht zweimal aufgebaut wird, was bei
Saschas Lösung der Fall ist.
--
Dennis Sterzenbach
http://www.darknoise.de/
php::bar PHP Wiki - Listenarchive