Zu den Aufzeichnungen der tutorials.de-Live-Workshops
ERLEDIGT
NEIN
ANTWORTEN
6
ZUGRIFFE
1023
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
  1. #1
    KD3 KD3 ist offline
    Registriert seit
    Apr 2007
    Beiträge
    453
    Sorry das es so lange gedauert hat. Da ich krank war und kaum kraft hatte um was zu tippen Aber ich glaub meine Lösung ist lächerlich

    PHP-Code:
    /*

    Kommentierung @_@

    Beispiel: 


            Zeile 12-24:

          29: $qry wird escaped.
          30: Ein "+" im Query wird gelöscht.
          34-41: Hier wird die Liste einmal durchlaufen und die 
             Muster werden gesammelt.
             Wie z.B 
                $arr0 = "Geo", 
                $arr1 = "ton", 
                $arr2 = "George Washington", 
                $arr3 = "GW" # Alle kleinbuchstaben werden entfernt


          Zeile 26-33:

          Anstatt einer if-Abfrage hab ich die 
          "Drei Operator Schreibweise" benutzt 
          (ich hoffe, dass es so genannt wird :D)
              Hier werden natürlich alle Präsidenten durchlaufen 
          und bei einer Übereinstimmung 
          wird der Gefundene ausgegeben.

    */ 
    PHP-Code:
    <?php

    $gf 
    file('presidents.txt');

    if(isset(
    $_POST['qry'])) {

      
    $arr0 = array();
      
    $arr1 = array();
      
    $arr2 = array();
      
    $arr3 = array();
      
      
    $qry htmlspecialchars($_POST['qry']);
      
    $qry preg_replace("~[\x2b]~",'',$qry);

      
    // Muster sammeln
      
      
    for($i 0$i count($gf); ++$i) {
        
        
    $arr0[] = substr($gf[$i],0,3);
        
    $arr1[] = substr($gf[$i],-5,3); // Unsicher.........................
        
    $arr2[] = $gf[$i];
        
    $arr3[] = preg_replace("~[^\x41-\x5a]~",''$gf[$i]); 
        
      }

      for(
    $i 0$i count($gf); ++$i) {
      
      echo 
    preg_match("~".$arr0[$i]."~"$qry) || preg_match("~".$arr1[$i]."~"$qry
        || 
    preg_match("~".$qry."~"$arr2[$i]) || $qry === $arr0[$i
        || 
    $qry === $arr1[$i] || $qry == $arr3[$i]
      ?
    'Match found : '$arr2[$i].'<br />' '';
      
      }

    }
    ?>
    <html>

    <head>
    <title>Tutorials.de QUIZ #1 (PHP)</title>
    </head>
    <body>
    <form method="post" action="index.php" accept-charset="utf-8" >
    <input name="qry" value="Suchbegriff" OnClick="this.value=''" />
    </form>
    </body>
    </html>
    Geändert von KD3 (22.09.08 um 15:51 Uhr)
     

  2. #2
    OnlyFoo OnlyFoo ist offline Mitglied Brokat
    Registriert seit
    Feb 2005
    Beiträge
    470
    Ich hab noch nicht nachvollzogen, was es tut, aber ich weiß, dass es nicht das tut, was es tun sollte =)
     

  3. #3
    kuddeldaddeldu kuddeldaddeldu ist offline Mitglied Diamant
    Registriert seit
    Dec 2007
    Ort
    Bremen
    Beiträge
    3.418
    Hi,

    Zitat Zitat von KD3 Beitrag anzeigen
    Aber ich glaub meine Lösung ist lächerlich
    warum das? Ich hab' sie zwar noch nicht ausprobiert...
    Aber sie ist auf jeden Fall schwer zu lesen. Vielleicht kommentierst Du Deinen Code noch ein bischen?

    LG
     
    Da es nötig zu werden scheint: Ich leiste hier keinen Support über PN. Stellt Rückfragen zu Euren Problemen bitte in Eurem Thread, dann können alle helfen.

  4. #4
    Avatar von Dennis Wronka
    Dennis Wronka Dennis Wronka ist offline Soulcollector
    Registriert seit
    Apr 2002
    Ort
    Hong Kong
    Beiträge
    12.296
    Blog-Einträge
    231
    Unschoen finde ich hier dass Du eine Funktion getsig() und eine Funktion getsig2() hast. Die Namensgebung ist meiner Meinung nach nicht gerade gut, was leider auch bei Variablennamen wie z.B. $gf und $foo.

    Dies ist zwar nur ein kleines Stueckchen Code, dennoch finde ich es wichtig immer darauf zu achten vernuenftige Namen fuer Funktionen und Variablen zu vergeben; in einem grossen Projekt ist dies vor allem dann wichtig wenn man es nach einem halben Jahr mal bearbeiten will, wenn man mit mehreren daran arbeitet, oder wenn mal jemand anders den eigenen Code nachvollziehen soll.
     
    PHP Class Collection - PHP-Klassen fuer PHP 5 (und Teilweise auch fuer PHP 4)
    Updates: Catcher 1.1, FTPConnection 1.2, MultiSQL 1.1, RSS2 1.1, SMTPConnection 1.4
    __________________
    EasyLFS - Hintergrundinformationen, Installationsanleitung, Softwareliste und Download
    EasyLFS Projektthread - Informationen, Status und Diskussion zu meiner Linux-Distribution
    __________________
    Ich bin die Schildkroete, mein Sohn. Ich habe das Universum erschaffen, aber bitte mach mir daraus keinen Vorwurf; ich hatte Bauchschmerzen.
    __________________
    Zitat Zitat von Friedrich Nietzsche
    Man muss noch Chaos in sich haben, um einen tanzenden Stern gebaeren zu koennen.

  5. #5
    KD3 KD3 ist offline
    Registriert seit
    Apr 2007
    Beiträge
    453
    @OnlyFoo

    JFK,GW, Geo usw. gehen und werden erfasst. Wenn du das mit dem Highlighting meinst dann hast du schon recht.

    @kuddeldaddeldu

    Die Funktionen waren sinnlos. Ich habe das Script jetzt viel verständlicher gemacht. Ich hab auch jetzt einbisschen Kommentiert

    @Dennis Wronka

    Meine Namensgebungen sind sehr schlimm, ich weiß . z.B sollte gf=getfile sein Ich hab z.B ein großes CMS gecodet worin nur Variablennamen als - ich will mal sagen "Mnemonic's" - existieren. Ich denke mal wenn ich die veröffentlichen würde, würde jeder nach paar Minuten den Ordner worin sich die Dateien befinden, direkt in den Papierkorb bzw. /dev/null verschieben.
     

  6. #6
    OnlyFoo OnlyFoo ist offline Mitglied Brokat
    Registriert seit
    Feb 2005
    Beiträge
    470
    Zitat Zitat von KD3 Beitrag anzeigen
    @OnlyFoo

    JFK,GW, Geo usw. gehen und werden erfasst. Wenn du das mit dem Highlighting meinst dann hast du schon recht.
    Aber nicht z.B. oooo für "Theodore Roosevelt" ... Die Buchstaben im Suchwort sollen in gleicher Reihenfolge im gefundenen Wort auftauchen, dann ist es ein Match
     

  7. #7
    kuddeldaddeldu kuddeldaddeldu ist offline Mitglied Diamant
    Registriert seit
    Dec 2007
    Ort
    Bremen
    Beiträge
    3.418
    Hi,

    ich habe das mal ausprobiert und näher angeschaut. Leider muss ich sagen , dass die Lösung ziemlich an der Aufgabe vorbei ist.
    Matches, bei denen das Suchwort zwar vorkommt, aber nicht an einem Stück (was ja Kern der unscharfen Suche ist), werden nur in dem ganz speziellen Fall gefunden, in dem das Suchmuster nur aus Grossbuchstaben besteht und im String auch nur diese Grossbuchstaben so vorkommen.
    Dafür ist nach Deiner Lösung ein Match, wenn die ersten oder die letzten 3 Zeichen des input-Strings im Suchmuster vorkommen (welcher Gedankengang steckte denn da hinter?). Das führt zu (theoretisch unendlich) vielen falschen Matches. So liefert die Abfrage "George Bush" auch Herrn Washington, die Abfragen "Geobla" und "blaGeo" liefern ebenfalls alle drei Georges.

    Ansonsten fällt auf, dass Du grundsätzlich die regexp-Engine bemühst, wo auch die einfachen (performanteren) String-Funktionen gereicht hätten.
    Den Einsatz von htmlspecialchars (an der Stelle) verstehe ich gar nicht, zumal Vergleiche eines maskierten Strings mit einem unmaskierten String (aus der Datei) fehlschlagen würden, wenn dort die entsprechenden Sonderzeichen vorkommen. Du wolltest sicherlich die Ausgabe maskieren.

    LG
     
    Da es nötig zu werden scheint: Ich leiste hier keinen Support über PN. Stellt Rückfragen zu Euren Problemen bitte in Eurem Thread, dann können alle helfen.

Thema nicht erledigt

Ähnliche Themen

  1. Quiz?
    Von MeisterLampion im Forum Office-Anwendungen
    Antworten: 12
    Letzter Beitrag: 03.11.06, 15:48
  2. Quiz: Was bin ich?
    Von MrTwister im Forum Werkstatt
    Antworten: 3
    Letzter Beitrag: 05.04.06, 19:14
  3. Quiz
    Von JannyR im Forum PHP
    Antworten: 2
    Letzter Beitrag: 21.05.05, 15:58
  4. Quiz
    Von alkaline im Forum PHP
    Antworten: 0
    Letzter Beitrag: 27.09.04, 10:16
  5. php Quiz
    Von Sim im Forum PHP
    Antworten: 0
    Letzter Beitrag: 09.05.04, 12:43