Moritz ohne Max: Suchen in der mysql datenbank muenchen-ost -> München Ost

ich habe es etwas das ich nicht lösen kann. Ich habe in meiner Datenbank eine Spalte mit Titel.

titel Die Geschichte von München Nachrichten aus der Welt von Oberbayern Kochen in Überlingen u.s.w

wenn ich es dann als Link ausgebe, werden die Umlaute, Sonderzeichen und Leerstellen umgewandelt. So das der Link das so aussieht.

die-geschichte-von-muenchen.html

wenn der Link aktiviert wird, wird über die .htaccess

RewriteRule ^(.*).html index.php?titel=$1 [L]

das ganze als Link übergeben, zum weiterverarbeiten.

$_GET['titel'])

in der dieser steht nun

die-geschichte-von-muenchen

Jetzt kommt mein Problem. In der Datenbank steht aber

Die Geschichte von München

wie kann ich jetzt diesen Datensatz ermitteln. Ich kann zwar - als leerzeichen wieder ersetzen aber bei den Umlauten tue ich mich da schwerer da es ja auch Wörter mit ue gibt und nicht automatisch ein ue ein Ü ist.

Für Eure Hilfe bin ich Dankbar

Moritz

  1. Hey,

    titel Die Geschichte von München Nachrichten aus der Welt von Oberbayern Kochen in Überlingen u.s.w

    Warum erstellst du nicht zu jeder Nachricht/Titel eine ID die du einfach ansprechen kannst?

    Gruß

    Jo

  2. Moin!

    Du wirst nicht darum herumkommen Titel und Titel_Link zu speichern.

    Also:

    Titel | TitelLink Geschichten aus München | Geschichten_aus_Muenchen Geschichten aus Köln | Geschichten_aus_Koeln

    Da Du ja keine 10 Millionen Geschichten veröffentlichen wirst hält sich der Speicherbedarf in Grenzen.

    Variante 2:

    Aber schau mal, wie einfach sich heise das macht:

    ID| Titel | TitelLink 1 | Geschichten aus München | Geschichten_aus_Muenchen 2 | Geschichten aus Köln | Geschichten_aus_Koeln

    Die Url sieht dann so aus:

    http://www.example.com.de/artikel/Geschichten_aus_Muenchen-1.html
    http://www.example.com.de/artikel/Geschichten_aus_Koeln-2.html

    Dann kannst Du einfach mit einem Regex die ID aus der URL holen und den Artikel anhand der ID liefern. "Geschichten_aus_Muenchen" wird einfach ignoriert. Das spart Dir eine menge Grips und Arbeit, weil Du ja daran denken musst, dass es auch nochmal Geschichten aus München geben könnte.

    Jörg Reinholz

  3. wie kann ich jetzt diesen Datensatz ermitteln. Ich kann zwar - als leerzeichen wieder ersetzen aber bei den Umlauten tue ich mich da schwerer da es ja auch Wörter mit ue gibt und nicht automatisch ein ue ein Ü ist.

    Es geht nur um die vier deutschen Zeichen ÄÖÜß? Dann probiere mal

    $titel_DB    = "Die Münchnerstraße in Coesfeld";   // in der Datenbank
    $titel_such  = "die-muenchnerstrasse-in-coesfeld"; // alle Buchstaben klein
    
    $titel_such1 = str_replace( "-", " ", $titel_such ); // - ersetzen
    
    $arr_search  = array ( "ae", "oe", "ue", "ss", "ä", "ö", "ü", "ß" );
    $arr_replace = array (  "%",  "%",  "%",  "%", "%", "%", "%", "%" );
    
    $titel_such2 = str_replace( $arr_search, $arr_replace, $titel_such1 );
    echo $titel_such2; // die m%nchnerstra%e in c%sfeld
    
    
    SELECT
    ...
    FROM
    ...
    WHERE LOWER( titel ) = $titel_such1
    OR    LOWER( titel ) LIKE $titel_such2
    

    sollte erfolgreich sein. Wegen des LOWER muss die Datenbank auf deutsch gepolt sein.

    Linuchs