Ankündigung

Einklappen
Keine Ankündigung bisher.

Namen aus text filtern

Einklappen

Neue Werbung 2019

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

  • Namen aus text filtern

    Hi, ich wollte mir ein Script basteln welches namen welche in einer db gespiechert sind mit einer forumlareingabe vergleichen. Diesen Code hab ich geschrieben:

    PHP-Code:
    $a_sc1 "SELECT name FROM acenter_dlautorn WHERE name LIKE '%$autor%'";
    $e_sc1 mysql_fetch_array(mysql_query($a_sc1)); 
    Funktioniert soweit ganz gut nur:

    In der db ist z.b der Name "abcd" gespeichert.

    wenn per forumlar aber nun "converted by abcd" eingegeben wird, wird dies aber nicht erkannt. Wisst ihr wie ich das noch ändern muss?

    Danke schonmal im Voraus!

  • #2
    Sry, aber wer gibt "converted by abcd" in ein Formularfeld ein, wenn daneben "Name" steht? Oo Da darf man sich net wundern, wenn er nix findet.
    Nicht jeder Fehler ist ein Bug.

    Kommentar


    • #3
      versuch mal mit INSTR oder LOCATE
      WHERE INSTR(".$autor.", name)>0;

      sonnst wundere ich mich genau so wie KingCrunch, wie man dazu kommt in ein Namen-feld Blödsinn zu schreiben.
      Slava
      http://bituniverse.com

      Kommentar


      • #4
        Naja wenn der ursprüngliche Autor einmal 1234 war, diese aktuelle Datei nun aber von ABCD convertiert wurde und er sich nicht komplett als autor eintragen möchte.

        Mal anders gefragt, gibt es ne Möglichkeit aus einem Text einen bestimmten Namen herauszufiltern?

        Kommentar


        • #5
          Naja wenn der ursprüngliche Autor einmal 1234 war, diese aktuelle Datei nun aber von ABCD convertiert wurde und er sich nicht komplett als autor eintragen möchte.
          Versteh ich nicht ^^ Also ist es jetzt doch nicht aus einem Formular, sondern einer Datei?
          Nicht jeder Fehler ist ein Bug.

          Kommentar


          • #6
            Nein, stell dir vor 1234 erstellt ein 3D Modell für Spiel 1. ABCD convertiert dieses Modell dann für Spiel 2 und läd seine Convertierung dann bei mir hoch, möchte aber auch den Ersteller also 1234 miterwähnen. Die Forumulareingabe sieht dann so aus:

            Autorenname: 1234 converted by ABCD

            Kommentar


            • #7
              Na, dann bleib ich aber bei meiner Aussage, dass "Autorenname" hier etwas missverständlich gewählt ist, wenn es noch anderes beinhalten darf. Sinnvoller wäre es wohl ein zusätzliches Feld einzubauen sinngemäß "Bearbeitet von" oder andersherum "Original von". Ein Name sollte in dem Sinne einen Namen enthalten.

              Wenn nämlich einer kommt und reinschreibt "1234 converted by ABCD", dann kommt der nächste "xyz edited by me 2007" und wieder einer schreibt "one (original by two)". Du siehst: Du hast kein einheitliches Format, dass du a) auf Gültigkeit prüfen kannst und b) damit auch nicht bzw nur sehr schwer einen eindeutigen Namen herausziehen kannst.
              Nicht jeder Fehler ist ein Bug.

              Kommentar


              • #8
                hmm

                aber ist es nicht möglich aus einem Text einen bestimmten Namen oder bestimmte Worte rauszufiltern?

                Kommentar


                • #9
                  Zitat von $$$ ThiKool $$$
                  hmm

                  aber ist es nicht möglich aus einem Text einen bestimmten Namen oder bestimmte Worte rauszufiltern?
                  das ist möglich wenn der Wort bekannt ist.
                  dafür kannst du in php strpos, oder regex verwenden.
                  in mysql bleiben dir INSTR und LOCATE, die gleiche funktionalität wie INSTR hat(sieh mein beispiel)
                  oder auch RLIKE bzw REGEX.
                  RLIKE und REGEX können natürlich genauer INSTR eine suche beschreiben.

                  in meinem beispiel mit INSTR kann es zum überschneidungen kommen.
                  zbs wenn wir user Slava und SlavaF haben, dann wird die Function INSTR bei dem Text : "converted by SlavaF" beide User liefern, da 'Slava' auch in diesem String zu finden ist.

                  Regex in mysql ist wesentlich langsamer als INSTR.
                  mit dem ausdruck:
                  'dein Text ein namen blja blja' REGEXP concat('[[:<:]]',name,' [[:>:]]')
                  kannst du ein wenig genauer der Inhalt von deinem feld 'name' auf vorkommen im dem Text untersuchen
                  Slava
                  http://bituniverse.com

                  Kommentar


                  • #10
                    Es geht scho, bloss soll er jetzt jedes Wort aus "abc converted by def proudly presented by ghi in cooperation with jkl" einzeln gegen jeden Benutzernamen vergleichen, wobei im Suchtext vielleicht der Name nur partiell vorhanden ist? Und dann hat jemand "by" im Namen oder heißt sogar "proudly" und das wird dann auch als Name erkennt?

                    Also entweder trennst du die beiden Informationen wirklich in zwei Felder auf und akzeptierst nur Namen, oder aber du erlaubst (wie jetzt) kein Name, aber ein Hinweis, dann wird aber der Vergleich mit Namen durchaus aufwendig und wahrscheinlich nicht 100%ig funktionieren.
                    Nicht jeder Fehler ist ein Bug.

                    Kommentar

                    Lädt...
                    X