mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Fr 29.03.2024 03:04 Benutzername: Passwort: Auto-Login

Thema: Umlaute umwandeln vom 18.05.2008


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> Umlaute umwandeln
Seite: 1, 2  Weiter
Autor Nachricht
AndiN
Threadersteller

Dabei seit: 31.05.2005
Ort: -
Alter: 41
Geschlecht: Männlich
Verfasst So 18.05.2008 21:58
Titel

Umlaute umwandeln

Antworten mit Zitat Zum Seitenanfang

Hallo zusammen,

ich habe ein Array in welchem diverse Suchstrings stehen die ich dann später auf eine Volltextsuche loslasse. Die mir dann alle Einträge liefert die mit einemd er im Suchstring-Array stehenden Strings übereinstimmen. Ich selbst habe leider keinen Einfluss darüber ob Umlaute als ä ö und ü oder mit den entsprechenden HTML-Zeichen in dieser DB abgespeichert sind. Beides ist möglich.

Daher habe ich mir folgende "Übersetzungstabelle" gebastelt:

foreach($array_suchstrings as $val1)
{
$val1 = str_replace("ä","ä",$val1);
$val1 = str_replace("ö","ö",$val1);
$val1 = str_replace("ü","ü",$val1);
$val1 = str_replace("Ä","Ä",$val1);
$val1 = str_replace("Ö","Ö",$val1);
$val1 = str_replace("Ü","Ü",$val1);
$val1 = str_replace("ä","ß",$val1);
$val3.= $val1.",";
}

foreach($array_suchstrings as $val2)
{
$val2 = str_replace("ä","ä",$val2);
$val2 = str_replace("ö","ö",$val2);
$val2 = str_replace("ü","ü",$val2);
$val2 = str_replace("Ä","Ä",$val2);
$val2 = str_replace("Ö","Ö",$val2);
$val2 = str_replace("Ü","Ü",$val2);
$val2 = str_replace("ß","ä",$val2);
$val4.= $val2.",";
}
$val5 = $val3.$val4;

$val5 ist dann die Grundlage für meine DB-Abfrage nach dem Motto "Gebe mir alle Tabelleneinträge aus in welchem du eines der Wörter findest die in $val5 stehen". Die Methode funktioniert zwar, ist mir jedoch zu lang und hat auch das Problem, dass nur Umlaute, jedoch keine anderen Sonderzeichen erfasst werden.

Daher habe ich es mit Folgendem probiert:

foreach($array_suchstrings as $val1)
{
$a = strtr($val1,array_flip(get_html_translation_table(HTML_SPECIALCHARS)));
$val1 = htmlspecialchars($a);
$val5.= $val1.",";
}

Leider funktioniert das nicht. Er findet nur Strings die mit ä ö oder ü geschrieben sind.

Warum? * Keine Ahnung... *
  View user's profile Private Nachricht senden
Spurlos

Dabei seit: 29.10.2005
Ort: -
Alter: 41
Geschlecht: Männlich
Verfasst So 18.05.2008 23:07
Titel

Antworten mit Zitat Zum Seitenanfang

die frage ist ma,
wozu brauchst du das im heutigen web?

1 gibt es funktionen für sowas
2 sollte man sich einfach den richtigen html header setzen
3 dabei drauf acheten das die iso norm stimmt

dann muss man auch nich so ein array basteln
  View user's profile Private Nachricht senden
Anzeige
Anzeige
AndiN
Threadersteller

Dabei seit: 31.05.2005
Ort: -
Alter: 41
Geschlecht: Männlich
Verfasst So 18.05.2008 23:19
Titel

Antworten mit Zitat Zum Seitenanfang

zu Nr. 1)
welche Funktionen gibt es denn da?

zu Nr. 2 und 3)
Wenn ich eine DB habe in der die Begriffe "Östereich" und "Österreich" stehen können (da diese DB von verschiedenen Quellen befüllt wird auf die ich keinen Einfluss habe), ich jedoch beide Einträge finden möchte wenn ein User nach "Österreich" sucht. Was hat das mit dem Header - sprich der ISO-Norm meiner Ausgabedatei zu tun? *Huch*
  View user's profile Private Nachricht senden
m
Moderator

Dabei seit: 18.11.2004
Ort: -
Alter: -
Geschlecht: Männlich
Verfasst So 18.05.2008 23:28
Titel

Antworten mit Zitat Zum Seitenanfang

Wenn es nicht anders geht, nutz einfach htmlentities().

Also zwei Suchbegriffe:

$phrase1 = 'Österreich';
$phrase2 = htmlentities('Österreich', ZEICHENSATZ);
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
AndiN
Threadersteller

Dabei seit: 31.05.2005
Ort: -
Alter: 41
Geschlecht: Männlich
Verfasst So 18.05.2008 23:42
Titel

Antworten mit Zitat Zum Seitenanfang

@m:

Vielen Dank schonmal.

Wenn jetzt jedoch jemand nach "Österreich" "Küste" und "Mühle" sucht hätte ich plötzlich statt drei Suchbegriffen sechs Suchbegriffe. Das würde meinen Webserver als das Doppelte an Zeit benötigen um die Abfrage durchzuführen.

Hm... gibt's da nicht eine Lösung die von der Performance her sinnvoller ist?

Da ich sehr viele DB-Felder durchsuchen muss, wird meine Abfrage dadurch ja rießig lang. Letzendlich muss ich jeden Suchstring in jedem Feld suchen. Wenn ich also 30 DB-Felder durchsuchen muss, benötige ich im o.g. Fall eine SELECT mit 180 (6 Begriffe x 30 Spalten) "feld LIKE '%.$suchstring.%'"-OR-Verknüpfungen.

Das ist irgendwie ziemlich suboptimal. * Ich geb auf... *
  View user's profile Private Nachricht senden
Spurlos

Dabei seit: 29.10.2005
Ort: -
Alter: 41
Geschlecht: Männlich
Verfasst So 18.05.2008 23:45
Titel

Antworten mit Zitat Zum Seitenanfang

Code:

<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />


versuch das mal bitte Lächel
ansonsten wie schon gesagt htmlentities()
http://de.php.net/manual/en/function.htmlentities.php

€dit sagt:

vllt sollte ich alles posten <-- Schuld!
Code:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3c.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">

<head>
   <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
</head>


Zuletzt bearbeitet von Spurlos am So 18.05.2008 23:49, insgesamt 1-mal bearbeitet
  View user's profile Private Nachricht senden
AndiN
Threadersteller

Dabei seit: 31.05.2005
Ort: -
Alter: 41
Geschlecht: Männlich
Verfasst Mo 19.05.2008 00:01
Titel

Antworten mit Zitat Zum Seitenanfang

@Spurlos:

Mal abgesehen davon, dass im Internet eigentlich eher charset=utf-8 an der Tagesordnung ist, verstehe ich immer noch nicht was mir das bei der Suche in der Datenbank bringen soll. Mein Problem ist nicht die Ausgabe, sondern die "Formatierung" der Keywords für die Volltextsuche in der Datenbank.

htmlentities() alleine bringt mir glaube ich nichts da ich ja beide Fälle in der DB stehen habe. Also sowohl Umlaute als auch die entsprechenden HTML-Zeichenketten. Oder sehe ich das falsch?


Zuletzt bearbeitet von AndiN am Mo 19.05.2008 00:02, insgesamt 1-mal bearbeitet
  View user's profile Private Nachricht senden
choise

Dabei seit: 01.02.2007
Ort: Würzburg
Alter: 35
Geschlecht: Männlich
Verfasst Mo 19.05.2008 07:33
Titel

Antworten mit Zitat Zum Seitenanfang

wie werden die daten in die datenbank gebacht ?
du könntest doch mit einer funktion alle umlaute auslesen und anpassen.
danach sorgst du dafür, dass nur noch eine schreibversion der umlaute
in die db geschrieben werden.
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
 
Ähnliche Themen PHP Umlaute
PHP Mailformular umlaute
Mailformular Umlaute
html umlaute
Umlaute im Kontakformular
umlaute im gästebuch
Neues Thema eröffnen   Neue Antwort erstellen Seite: 1, 2  Weiter
MGi Foren-Übersicht -> Programmierung


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.