+ Antworten
Ergebnis 1 bis 6 von 6

Thema: [PHP] Worte vergleichen

  1. #1
    TP-Junior twilight macht alles soweit korrekt
    Registriert seit
    Mar 2005
    Beiträge
    12

    [PHP] Worte vergleichen

    Hallo liebe Traum-Projektler,

    ich versuche grade einen vocabeltrainer in PHP zu programmieren. Das Problem ist, dass ich bei dem ablgeichen der Vocabeln ein bisschen hängen bleibe.

    Also ich habe eine Variable, welche zu dem gesuchten Wort die übersetzte Form aus einer Datenbank ausliest. Z.b wird das Wort "court" gesucht. Aus der Datenbank würde er sich jetzt folgendes holen "(Gerichts-, Königs-)Hof, Gericht".

    Zur Zeit wandel ich dieses in einen Array um und verwende als Trennungszeichen das ", ".Dann gleiche ich ab ob es in einem der Arrays eine übereinstimmung mit dem eingegeben Wort gibt. Dieses verfahren funktioniert nur so lange, bis ein Wort mit einer Klammer auftaucht.

    Würde ich es weiterhin mit dem spliten versuchen, wären die Antwortmöglichkeiten nur "(Gerichts-", "Königs-)Hof" und "Gericht".
    Eigentlich sollten aber die richtigen Antwortmöglichekiten
    "Gerichtshof", "Königshof", "Hof" und "Gericht" sein. Evtl. sollte auch noch eine eingabe mit den Klammern für richtig identifiziert werden.

    Überlegt hatte ich mir, die Klammern zu löschen und die "-" mit "hof" zu ersetzen. Dies funktioniert aber auch nicht so ganz, weil die Variable ja einen anderen Wert beinhalten kann, z.B. "(be-, zu-)decken, Decke(l), Deckung".


    Habt ihr vielleicht eine Idee, wie ich dieses Problem lösen kann?

    Ich hoffe ich habe es verständlich erklärt.
    markus

  2. #2
    TP-Senior VoltFreeze ist auf einem guten Weg
    Registriert seit
    Sep 2003
    Beiträge
    254
    hallo,

    also das mit dem ersetzen halte ich schonmal für nen guten anfang.

    du holst die übersetzung ja aus ner datenbank... und an deiner stelle würd ich einfach mit replace alle klammern in zum beispiel: XxX u. Xx2X (hauptsache irgendeine zeichenfolge, die sicherlich niemals reell vorkommt) replacen und bevor du die übersetzung dann als html "ausspucken" lässt, lässt alles wieder von XxX oder Xx2X nach ( oder ) replacen...

    MfG VoltFreeze
    Vertraue niemals einem PC, den du nicht aus dem Fenster schmeißen kannst.

  3. #3
    TP-Junior twilight macht alles soweit korrekt
    Registriert seit
    Mar 2005
    Beiträge
    12
    danke für deine Antwort, doch leider versteh ich diese nicht ganz.

    Was würde mir das bringen, wenn ich die Klammern in XxX und Xx2X replace? Dann könnte ich doch trozdem nicht die Worte in der Klammer mit dem Wort nach der Klammer verbinden, um so neue Schlüsselwörter zu erzeugen? Oder hab ich da jetzt was falsch verstanden?


    gruß
    markus

  4. #4
    TP-Senior Angelmaker ist auf einem guten Weg
    Registriert seit
    Jul 2006
    Ort
    Köln
    Beiträge
    247
    PHP-Code:
    // INIT
    $var='(Gerichts-, Königs-)Hof, Gericht';

    // Ist eine Klammer enthalten? Wenn ja, dann so, ansonten ausgabe der var
    $banana_split=split('\(',$var);

    if (
    is_array($banana_split)) 
    {
        
    // Debug only
        // echo '<pre>'.print_r($banana_split).'</pre>';
        
        // Wieviele Wörter in der Klammer.
        
    $klammer=split('\)',$banana_split[1]);
        
        
    $klammerwörter=split(',',$klammer[0]);
        
        
    // Debug only
        // echo '<pre>'.print_r($klammerwörter).'</pre>';
        
        
    for ($i=0;$i<sizeof($klammerwörter);$i++)
        {
            
    $wort[]=substr($klammerwörter[$i],0,stripos($banana_split[1],'-')-1);
            
    // echo $wort[$i]; // Debug
        
    }
        
        
    // Nach der Klammer ist vor der nächstesn Klammer ^^
        
    $blubb=split('\)',$var);
        
    $nichtklammer=split(',',$blubb[1]);
        
        
    // Erstes Wort ist natürlich [0]
        // echo '<pre>'.print_r($nichtklammer).'</pre>';
        
        
    for ($i=0;$i<sizeof($nichtklammer);$i++)
        {
            if (
    $i==0$anhang=$nichtklammer[$i];
            else
            
    $weitere_vokabeln[]=$nichtklammer[$i];
        }
        
        for (
    $i=0;$i<sizeof($wort);$i++)
        {
            
    $vokabeln[]=$wort[$i].$anhang;
        }
        for (
    $i=0;$i<sizeof($weitere_vokabeln);$i++)
        {
            
    $vokabeln[]=$weitere_vokabeln[$i];
        }

                 echo 
    '<pre>';
        
    print_r($vokabeln);
        echo 
    '</pre>';

    Code ist getestet mit Dienem beispiel und funzt. Sorg dafür, daß die Datenbank immer Deine Regeln einhält, und es geht gut .

    Okay, bitte nicht lästern - ich bin nicht so der PHP Haxxor, es gibt bestimmt auhc optimierte PREGS und was weiss ich nicht noch alles, aber das Problem hat mich gereizt, deswegen hab ich es mir mal angeschaut. Langweilig ist mir mit SIcherheit nicht, aber naja, so sieht´s aus.

    Falls Du es als Grundlage für Deine eigene Funktion verwenden kannst, umso besser, freu7t mich, wenns geholfen hat.

    ---Edit: Das war das letztemal, daß ich mir den Beitrag Nicht in ganzer Länge durchlese, bevor ich anfange loszuhacken. - für den Decke(l) mußt DU natürlich eine Ausnahme machen. Etwa in der Form, daß nur die erste Klammerseparierung betrachtet wird. Dann sollte es aber gehen, und z.B. Decke(l) so ausgegeben werden.
    Geändert von Angelmaker (01.03.2007 um 13:29 Uhr)
    Ich habe keine Signatur. Dieser Satz kein Verb.

  5. #5
    TP-Junior twilight macht alles soweit korrekt
    Registriert seit
    Mar 2005
    Beiträge
    12
    Vielen vielen dank für deine Mühen! Der Code ist echt Klasse, werde ihn mal erweitern, so das der Decke(l) auch passt vielen Danke noch einmal

    marKus

  6. #6
    TP-Senior Angelmaker ist auf einem guten Weg
    Registriert seit
    Jul 2006
    Ort
    Köln
    Beiträge
    247
    Gern geschehen.

    edit: Mir fällt grad auf - für mehrere durchläufe mußt DU halt auch die Arrays, wie Wort[], etc. wieder resetten. Ach, im nachhinein fällt mir noch so viel auf...
    Geändert von Angelmaker (28.02.2007 um 10:43 Uhr)
    Ich habe keine Signatur. Dieser Satz kein Verb.

+ Antworten

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

     

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51