Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Text herausfiltern in PHP mit leerzeichen berücksichtigung

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] Text herausfiltern in PHP mit leerzeichen berücksichtigung

    Hey Leute,
    ich bin gerade auf der Suche nach einem PHP Script. Mein Problem ist, wenn ein User jetzt zum Beispiel einen Eintrag mit iPhone5 macht, schreibt jeder das iPhone5 anders:

    i Phone5
    iPhone 5
    iPhone5
    i Phone 5

    usw.
    ich möchte nämlich alle texte die den text iPhone5 enthalten, aus der datenbank herausfiltern:
    Ich habe es mit diesem Code versucht, jedoch geht dieser nicht:

    SELECT * FROM anzeigen WHERE beschreibung LIKE '%i%P%h%o%n%e%5%'

    weil wenn man jetzt nach der Reihe die Buchstaben/Zahlen i P h o n e 5
    eingibt, dann filtert er zum Beispiel auch diesen Text heraus:

    (I)ch versuche das (P)rodukt, welc(h)es ich (o)(n)lin(e) gekauft habe, um (5)00 Euro zu verkaufen.

    Gibt es eine Möglichkeit diesen Text herauszufiltern, wo die leerzeichen berücksichtigt werden, oder muss ich jede einzelne Definition Mysql mitgeben zum auslesen?

    Danke im Voraus,
    csskevin


  • #2
    Reguläre Ausdrucke
    http://dev.mysql.com/doc/refman/5.6/en/regexp.html
    Standards - Best Practices - AwesomePHP - Guideline für WebApps

    Kommentar


    • #3
      Eine möglichkeit wäre:

      https://eval.in/private/66f28d24d90c56

      http://php.net/manual/en/function.soundex.php
      http://dev.mysql.com/doc/refman/5.0/...nction_soundex
      [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

      Kommentar


      • #4
        Dann findet er aber auch wieder zig Sachen, die nichts mit iPhone zu tun haben, weil sie den gleichen soundex Index haben. Alternative: Sphinx, ElasticSearch, Solr.
        Standards - Best Practices - AwesomePHP - Guideline für WebApps

        Kommentar


        • #5
          Das stimmt, allerdings kennt mysql dazu auch noch alternativen. Er könnte beispiel die Levensthein-Distanz beider Strings errechnen und hinzuziehen, was den soundex ein Stück treuer machen kann. Oder metaphone-values.

          Sphinx ist jetzt nicht unbedingt überall verfügbar. Soundex, Levensthein und metaphone schon.
          [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

          Kommentar


          • #6
            Danke für die schnellen Antworten:

            Ich habe den Code:
            PHP-Code:
            $o = ['i phone 5''iphone 5''i phone5''ipho ne5'];
            var_dump(array_map('soundex'$o)); 
            versucht auszuführen aber er schreibt mir einen fehler: Parse error: syntax error, unexpected '[' in /usr/www/users/fddfwl/anzeigen/anzeigen.php on line 126

            $o ist auf line 126

            Und wie kann ich bei REGEXP auswählen dass er den Text von der spalte beschreibung filtert?

            Lg,
            csskevin

            Kommentar


            • #7
              PHP Version Updaten. [..] ist array syntax für PHP 5.4 und höher. Wir sind jetzt bei PHP 5.6 und laufen auf PHP 7 zu.
              [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

              Kommentar


              • #8
                Ah danke ok, jetzt hat es funktioniert, und wie kann ich dies nun in Mysql filtern?

                PHP-Code:
                $sql "SELECT * FROM anzeigen where beschreibung LIKE '".var_dump(array_map('soundex'$o))."'"
                so?

                Kommentar


                • #9
                  Seit wann ist Levensthein in mysql enthalten?
                  Metaphone ist ähnlich nutzlos wie soundex.
                  Standards - Best Practices - AwesomePHP - Guideline für WebApps

                  Kommentar


                  • #10
                    Ist sie nicht, aber es gibt Levensthein-Implementierungen für MySQL ( zum Compilen und als Stored Procedure ).

                    @csskevin: SOUNDS LIKE statt LIKE und dann einfach angeben wonach du filterst / suchst,
                    [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

                    Kommentar


                    • #11
                      Ok hat funktioniert
                      Vielen Dank für die Hilfe
                      lg,
                      csskevin

                      Kommentar

                      Lädt...
                      X