netdirk
09.11.2005, 17:37:27
ich habe ein script geschrieben das keywords automatisch ausgeben soll.
mein lokales testsystem läuft unter windows hier funktioiert das script einwandfrei. der server selbst läuft unter linux. hier hat das script probleme mit den deutschen umlauten.
hier der code:
#### ~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=
## die suche nach den keywords beginnt
# 1. Löschen aller wörter die auf einen . oder : folgen
$pattern = "/[.:]{1,5}( )?\b[A-ZÄÖÜa-zäöüß&;]{2,50}\b/sU";
$text = preg_replace($pattern, ' ', $text);
# 2. Löschen aller kleingeschrieben worte
$pattern = "/\b[a-zäöü&;]{2,50}\b/sU";
$text = preg_replace($pattern, '', $text);
die gefundenen wörter werden dann in einem nächsten schritt in ein array geschrieben. dabei werden dann auch leerzeichen und anderer schrott enfernt:
foreach ($extract as $word)
{
$pattern = "/\W/sU";
$word = preg_replace($pattern, '', $word);
## wen word leer ist oder kleiner, gleich 2 zeichen lang ist
if (empty($word) || strlen($word) <= 2)
{
unset($word);
}
else
{
if(!isset($words[$word]))
{
$words[$word] = '1';
}
else
{
$key = $words[$word];
$key++;
$words[$word] = $key;
}
}
}
die keywords die das script dann ausgibt sind sehr gut.
probleme hat es nur auf linux mit den umlauten. stößt es unter linux auf ein wort mit einem umlaut dann stellt es das nur teilweise dar.
z.b. aus "gefäß" wird dann "gef". oder aus "vorankündigung" wird "vorank".
ist irgendwas am suchmuster verkehrt?
behandelt linux umlaute anders als windows?
sitze jetzt schon seit 2 tagen darüber. was mach ich verkehrt?
mein lokales testsystem läuft unter windows hier funktioiert das script einwandfrei. der server selbst läuft unter linux. hier hat das script probleme mit den deutschen umlauten.
hier der code:
#### ~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=
## die suche nach den keywords beginnt
# 1. Löschen aller wörter die auf einen . oder : folgen
$pattern = "/[.:]{1,5}( )?\b[A-ZÄÖÜa-zäöüß&;]{2,50}\b/sU";
$text = preg_replace($pattern, ' ', $text);
# 2. Löschen aller kleingeschrieben worte
$pattern = "/\b[a-zäöü&;]{2,50}\b/sU";
$text = preg_replace($pattern, '', $text);
die gefundenen wörter werden dann in einem nächsten schritt in ein array geschrieben. dabei werden dann auch leerzeichen und anderer schrott enfernt:
foreach ($extract as $word)
{
$pattern = "/\W/sU";
$word = preg_replace($pattern, '', $word);
## wen word leer ist oder kleiner, gleich 2 zeichen lang ist
if (empty($word) || strlen($word) <= 2)
{
unset($word);
}
else
{
if(!isset($words[$word]))
{
$words[$word] = '1';
}
else
{
$key = $words[$word];
$key++;
$words[$word] = $key;
}
}
}
die keywords die das script dann ausgibt sind sehr gut.
probleme hat es nur auf linux mit den umlauten. stößt es unter linux auf ein wort mit einem umlaut dann stellt es das nur teilweise dar.
z.b. aus "gefäß" wird dann "gef". oder aus "vorankündigung" wird "vorank".
ist irgendwas am suchmuster verkehrt?
behandelt linux umlaute anders als windows?
sitze jetzt schon seit 2 tagen darüber. was mach ich verkehrt?