Text automatisch erstezen

Text automatisch erstezen

am 03.09.2006 11:13:08 von Alex Bleibtreu

Hallo !


Ich möchte, dass meine php-suchmaschine, die leider wörter mit ö,ü,ä, nicht
findet, da die html-Dateien, die diese durchsucht anderst kodiert sind
findet.

In der SUche gebe ich z.B. ein: "verträge". Das wort wird in den Dateine,
die Durchsucht werden nicht gefunden, da es dort so geschrieben ist:
"verträge"

nun möchte ich, dass wenn jemand in der suche "verträge" eingibt, die
eingabe automatisch geändert wird in "verträge" und dann erst die Suche
beginnt.

Könnt Ihr mir da weiterhelfen?

Hier das Script (auszugsweise):


--------------schnippp------------





PHP-Suchmaschine











########### PHP-Suchmaschine ###########
########### powered by Viktor Widiker & http://www.widiker.de, Berlin 2002
###########

########### Hier folgen die Einstellungen ###########

$max_suchwoerter=3; # Maximale Anzahl der Suchw?rter, die wahrgenommen
werden

$treffer_pro_seite=10; # Wie viele Treffer werden pro Ergebnisseite
angezeigt?

$endungen=array("html","htm"); # Dateien mit welchen Endungen werden
durchsucht?

$pfade_gesamt="./,bleiste/,form/,image/,inhalt/,news/,pdf/,p df06/,produkte/,service/,unterhal/,untern/,untern/,gleichbeh andlung/,N/,netz/,netz/bereitschaft/,netz/bestimmungen/,netz /entgelte/,netz/grundversorg/,netz/lastprofile/,netz/musterv ertr/,netz/pdf/,netz/sonstiges/,leist/navi/";
# Adressen (relativ zum Suchmaschinennskript) der zu durchsuchenden Ordner
(durch Kommata trennen!)

$max_stelle=200; # Maximale (ungef?hre) L?nge (in Zeichen) der ersten
gefundenen Textstelle

$mehr_laenge=200; # Maximale (ungef?hre) L?nge (in Zeichen) des Strings f?r
weitere Vorkommnisse

########### Ab hier folgt die Suche #######
if (!isset($grossschreibung)) { $grossschreibung=0; }
if (!isset($ganzewoerter)) { $ganzewoerter=0; }
if (!isset($index)) { $index=0; }

$suchtext=trim(stripslashes($suchtext));
if ($grossschreibung==0) { $suchtext=strtolower($suchtext); }
$suchtext=ereg_replace(","," ",$suchtext);
$suchtext2=array(); $suchwoerter=array();
$suchtext2=explode(" ",$suchtext);
foreach ($suchtext2 as $einwort)
{
if (($einwort!="") && (count($suchwoerter)<=($max_suchwoerter-1)) &&
(!in_array($einwort,$suchwoerter)))
{ array_push($suchwoerter,$einwort); }
}
$suchtext=implode(" ",$suchwoerter);
?>

" method="post">
bgcolor="#ccddee" align="center">






echo " $browser=$HTTP_USER_AGENT;
if (1*strpos(strtolower($browser),"msie")>0) { echo "25"; } else { echo
"14"; }
echo "\" value=\"".$suchtext."\">

";
?>


Gro?- und Kleinbuchstaben

($grossschreibung==1) echo "checked"; ?>>unterscheiden

($grossschreibung==0) echo "checked"; ?>>nicht unterscheiden

Art der Suche

echo "checked"; ?>>nur ganze W?rter

echo "checked"; ?>>Wortteile



if ($suchtext!="") { start(); ausgabe(); }

function start()
{
global
$suchwoerter,$grossschreibung,$ganzewoerter,$dateinummer,$tr effer,$max_stelle,$mehr_laenge;
global $endungen,$pfade_gesamt;
$dateinummer=0;
$treffer=array();
$pfade=array(); $pfade=explode(",",$pfade_gesamt);
foreach ($pfade as $pfad)
{
$ordner=opendir($pfad);
while ($eintrag=readdir($ordner))
{
$name=$pfad.$eintrag;
$dateiname=explode(".",$eintrag);
if (in_array($dateiname[1],$endungen))
{
$anzahl=0;
$schluss=0;
$gefundene_woerter=array();
$datei=fopen($name,"r");
while (!feof($datei))
{
$zeile=fgetss($datei,10000,"");
if ($grossschreibung==0) { $zeile=strtolower($zeile); }

$woerter=explode(" ",$zeile);
foreach ($woerter as $wort)
{
foreach ($suchwoerter as $suchwort)
{
### ganze W?rter ###
if ($ganzewoerter==0)
{
if (strstr($wort,$suchwort))
{
if (!in_array($suchwort,$gefundene_woerter)) {
array_push($gefundene_woerter,$suchwort); }
$anzahl++;
$treffer["vorkommnisse"][$dateinummer]++;
if ($anzahl==1)
{
$treffer["datei_url"][$dateinummer]=$name;

$position=strpos($zeile,$wort);
$wortlaenge=strlen($wort);
$zeilenlaenge=strlen($zeile);
if ($zeilenlaenge>$max_stelle)
{
$lside=$position-(($max_stelle-$wortlaenge)/2);
$rside=$lside+$max_stelle;
if ($lside<0) { $rside=$rside-$lside; $lside=0; }
if ($rside>$zeilenlaenge) { $rside=$zeilenlaenge; }
}
else { $lside=0; $rside=$zeilenlaenge; }
$stelle=substr($zeile,$lside,$rside-$lside);
$stelle=ereg_replace($wort," class=\"markierung\">".$wort."",$stelle);
$stelle="...".$stelle."...";
$treffer["textstelle"][$dateinummer]=$stelle;
}
else if ($anzahl==2) { $teil=ereg_replace(",","",$teil);
$mehr=$teil; }
else if ($anzahl>2)
{
if (strlen($mehr)<$mehr_laenge) { if ($mehr=="") { $komma=""; }
else { $komma=", "; } $wort=ereg_replace(", ","",$wort);
$mehr.=$komma.$wort; }
else { if ($schluss!=1) {$mehr=$mehr." ..."; $schluss=1;} }
}
}
}
--------------------schnappp--------------

Re: Text automatisch erstezen

am 03.09.2006 11:55:33 von Ulf Kadner

Alex Bleibtreu wrote:

> Ich möchte, dass meine php-suchmaschine, die leider wörter mit ö,ü,ä, nicht
> findet, da die html-Dateien, die diese durchsucht anderst kodiert sind
> findet.

Dann dekodiere das zu durchsuchende Dokument einfach befor Du es für den
Suchvorgang idizierst. html_entity_decode() hilft Dir dabei

> Hier das Script (auszugsweise):
> ...

Poste bitte nur relevanten Code, der ein Problem bei Dir verursacht.

Wenn Du den Code nicht versehst, lern PHP! Es ist hier in der NG in
gewisser Weise eine Voraussetzung.

Alternativ kannst Du auch jemanden damit beauftragen & dafür bezahlen,
wenn Du keine Lust hast PHP zu lernen.

MfG, Ulf

Re: Text automatisch erstezen

am 06.09.2006 00:35:00 von CV

Alex Bleibtreu wrote:
> Hallo !
>
>
> Ich möchte, dass meine php-suchmaschine, die leider wörter mit ö,ü,ä, nicht
> findet, da die html-Dateien, die diese durchsucht anderst kodiert sind
> findet.
> [...]
> Könnt Ihr mir da weiterhelfen?

den ellenlangen Code hab ich jetzt nicht näher angeschaut, trotzdem zwei
Tipps:

1.)
Um die Probleme mit Zeichencodierung dauerhaft zu lösen, müssen die
eingelesenen Daten und die Suchtermini in ein einheitliches Format
überführt werden. Das ist -insbesondere mit falsch oder gar nicht
deklarierten Codierungen- kein ganz triviales Unterfangen.

2.)
Für öffentliche Seiten würde ich mir überlegen, ob es nicht weniger
Arbeit ist, Google Site Search [1] zu benutzen. Das spart nicht nur
einen Haufen Arbeit, sondern hat auch den netten Nebeneffekt, dass man
schnell mitkriegt, ob die eigenen Seiten suchmaschinentechnisch gut
indizierbar sind.

gruss,
c'noch zu früh für's Bett'hris

[1] http://www.google.com/services/siteflavored.html

--
http://rfcconnector.com - RFC made easy

Re: Text automatisch erstezen

am 06.09.2006 15:14:20 von Micha Kuehn

Alex Bleibtreu schrieb:
> Könnt Ihr mir da weiterhelfen?

Ich hatte dir eine Mail geschrieben, schon am 3.9., aber heute kam die
zurück:
: connect to dad.com[206.207.85.33]: Connection refused

Schade!

Micha
--
Persönliche Mails: Bitte nur als reply - und als Wurmkur werden alle
Mails > 100 KB automatisch und unbesehen gelöscht!

Re: Text automatisch erstezen

am 06.09.2006 21:32:26 von Frank Schenk

Micha Kuehn schrieb:

> Ich hatte dir eine Mail geschrieben...

PMs im Usenet nur auf Anfrage. Aber an diese Adresse würde ich eh nie
eine Email schreiben, der Verwender hat noch nie was von Example.com
gehört...

Domain Name: DAD.COM
Registrar: ATCOM TECHNOLOGY LLC
Whois Server: whois.atcomtechnology.com
Referral URL: http://www.atcomtechnology.com
Name Server: MAG2.MAGMACOM.COM
Name Server: TRUDEAU.UNITEDSTATES.COM
Status: REGISTRAR-LOCK
Updated Date: 06-may-2006
Creation Date: 06-jun-1997
Expiration Date: 05-jun-2007

Ich glaub ja nicht, daß er mit DAD.com was zu tun hat ;)

> Schade!

Für dich :)


Frank

Re: Text automatisch erstezen

am 07.09.2006 13:57:36 von Micha Kuehn

Frank Schenk schrieb:
>> Schade!
>
> Für dich :)

Wieso für mich? Ich wollte ihm doch helfen. Es war schließlich seine
Anfrage.

Micha
--
Persönliche Mails: Bitte nur als reply - und als Wurmkur werden alle
Mails > 100 KB automatisch und unbesehen gelöscht!