funktion verbessern

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

  • funktion verbessern

    Hi Leute,

    ich hab mir grad eine funktion zum zensieren von textstrings usw geschrieben....

    aber jemand meinte zu mir, ich könnte die funktion auch ohne schleife lösen, so dass es auch auf die performance rücksicht nimmt.
    ...leider bekam ich nur den hinweis 'array' zu dieser Lösung .

    meine frage wäre daher, falls das stimmt, wie ist das gemeintl ?



    PHP-Code:
    function badwords($text_str$language)
    {        
          include(
    "#db_admin.php"); 
          
    $link_admin mysql_connect($hostip$benutzer$passwort);
                        
    mysql_select_db($db_admin,$link_admin);
          
          if (
    $link_admin)
          {  
                
    $sql_badword mysql_query("SELECT keyword FROM ".$language."_badwords"$link_admin);
                
    $row_badword mysql_fetch_array($sql_badword);
                               
    mysql_close($link_admin); 

                 while(
    $row_badword mysql_fetch_array($sql_badwordMYSQL_ASSOC))
                 {
                 
    $badword  "$row_badword[keyword]";
                 
    $text_str str_replace($badword,"***",$text_str);
                 }
                  
          } 

               
     return 
    $text_str;    


    echo 
    badwords($text,$language); 

  • #2
    sagen wir so, str_replace würde auch ein array als erstes parameter akzeptieren, doch um die einträge aus der db auszulesen, kommst du um die while-schleife nicht drum herum.

    Kommentar


    • #3
      Original geschrieben von penizillin
      doch um die einträge aus der db auszulesen, kommst du um die while-schleife nicht drum herum.
      und wenn er die badwords als csv oder serialisiertes array ablegt?

      Kommentar


      • #4
        Fernab von Array liesse sich das beispielsweise auch mittels stripos() realisieren. Allerdings erachte ich die obrige Lösung als weitaus sinnvoller.
        [COLOR=red]Gesellschaftsforum.net[/COLOR] - Projekt zur Wiederbelebung der Diskussionskultur im Internet
        [COLOR=orange]1st News[/COLOR] - Das Newsletterscript für den professionellen Einsatz

        Kommentar


        • #5
          Re: funktion verbessern

          PHP-Code:
          function badwords($text_str$language)
          {        
                include(
          "#db_admin.php");  /* <-- was macht denn die Raute da? */
                
          $link_admin mysql_connect($hostip$benutzer$passwort); /* <-- du verbindest dich nicht ernsthaft bei
           jedem Aufruf der Funktion neu mit dem DB-Server?!... */
                              
          mysql_select_db($db_admin,$link_admin);
                
                if (
          $link_admin)
                {  
                      
          $sql_badword mysql_query("SELECT keyword FROM ".$language."_badwords"$link_admin);
                      
          $row_badword mysql_fetch_array($sql_badword);
                                     
          mysql_close($link_admin); 

                       while(
          $row_badword mysql_fetch_array($sql_badwordMYSQL_ASSOC)) /* <-- warum nicht gleich
           mysql_fetch_assoc()? */
                       
          {
                       
          $badword  "$row_badword[keyword]"/* <-- Ganz abgesehen davon, dass die Variablenzuweisung hier
           unnötig ist, wie weist du denn bitte Variablen zu? Was machen die Anführungszeichen rechts???!... weg damit -.- */
                       
          $text_str str_replace($badword,"***",$text_str);
                       }
                        
                } 

                     
           return 
          $text_str;    


          echo 
          badwords($text,$language); 
          Und ganz off-topic: Wer braucht denn noch eine Blackword-List? Spielerei wie ich finde, aber egal

          Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

          bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
          Wie man Fragen richtig stellt

          Kommentar


          • #6
            Re: Re: funktion verbessern

            Original geschrieben von ghostgambler
            Und ganz off-topic: Wer braucht denn noch eine Blackword-List? Spielerei wie ich finde, aber egal
            he,he... ich nutze das auch nicht um richtige texte zu zensieren...
            da wo dieses script eingesetzt wird (Hort-webseite) möchten die Betreuer verhindern, dass die Kids schimpfwörter als nics verwenden.
            denn das ist in dem alter wohl total in


            nun mal zum code :

            1. die raute... verhindert den direkten aufruf dieser datei per browser.
            hab ich mal so gelernt bzw gelesen die funktion wird ja nur bei der anmeldung für nicks verwendet...
            obwohl ich mir sicher vorstellen kann, dass dieses script später auch an anderen stellen eingesetzt wird...

            2. mysql_fetch_assoc(), ok... entweder hab ich das nicht richtig verstanden oder du hilfst mir dabei zu entdecken, warum meine variante falsch ist ***hilfe

            3. die variablenzuweisung...
            eigentlich woltle ich das direkt im str_replace angeben, also so :
            PHP-Code:
            $text_str str_replace($row_badword['keyword'],"***",$text_str); 
            aber da hat mein php immer gemeckert...allerdings weiß ich echt nicht warum.... nur deshlab habich die variable so zugewiesen.
            auf die anführungszeichen verzichte ich sonst schon....


            PS: find ich RICHTIG cool, das script so durchzusprechen und mängel bzw fehler anzugeben... denn ich möchte dieses script schon gern so gut wie es nur geht schreiben... nicht wegen dem Hort, sondern weil ich gerne darauf verzichten möchte, mir fehler anzulernen

            Kommentar


            • #7
              Original geschrieben von 3DMax
              und wenn er die badwords als csv oder serialisiertes array ablegt?
              an csv files hatte ich noch nicht gedacht.... aber hab damit schon öfter gearbeitet...wüßte also wie ich die einlese und daraus nen array erzeuge....

              wäre denn ein Lösung, darauf basierend, schneller und besser als die mysql variante mit schleife ?

              Kommentar


              • #8
                Re: Re: Re: funktion verbessern

                Original geschrieben von bärlina
                da wo dieses script eingesetzt wird (Hort-webseite) möchten die Betreuer verhindern, dass die Kids schimpfwörter als nics verwenden.
                denn das ist in dem alter wohl total in
                Wäre dann nicht ein return true/false mit Fehlerausgabe besser als einfach den Nicknamen durch Sternchen zu ersetzen?!

                1. die raute... verhindert den direkten aufruf dieser datei per browser.
                so eine sch*
                Sowas macht man mit mod_access http://httpd.apache.org/docs/2.0/mod/mod_access.html

                2. mysql_fetch_assoc(), ok... entweder hab ich das nicht richtig verstanden oder du hilfst mir dabei zu entdecken, warum meine variante falsch ist ***hilfe
                Die Variante ist nicht falsch, aber länger als mysql_fetch_assoc und komplizierter zu lesen wie ich finde

                3. die variablenzuweisung...
                eigentlich woltle ich das direkt im str_replace angeben, also so :
                PHP-Code:
                $text_str str_replace($row_badword['keyword'],"***",$text_str); 
                aber da hat mein php immer gemeckert...allerdings weiß ich echt nicht warum.... nur deshlab habich die variable so zugewiesen.
                auf die anführungszeichen verzichte ich sonst schon....
                Also mein PHP gibt aussagekräftige Fehlermeldungen und meckert nicht nur vor sich rum ... geh mal auf php.net und achte darauf die anti-Mecker-Version zu laden.... *sarkasmus off* ernsthaft, so wäre es vernünftig, du musst dich irgendwo vertippt haben oder sonstwas, aber ohne Fehlermeldung lässt sich das Problem schlecht (gar nicht) lokalisieren

                Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                Wie man Fragen richtig stellt

                Kommentar


                • #9
                  Original geschrieben von bärlina
                  wäre denn ein Lösung, darauf basierend, schneller und besser als die mysql variante mit schleife ?
                  nicht unbedingt ... mach es halt so wie du willst, solange du keine kritische Performance-Umgebung hast, ist das vollkommen irrelevant (aber wie gesagt, das ständige neu-Verbinden mit mysql ist nicht gerade ... hübsch...)

                  Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                  bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                  Wie man Fragen richtig stellt

                  Kommentar


                  • #10
                    Re: Re: Re: Re: funktion verbessern

                    Original geschrieben von ghostgambler
                    Wäre dann nicht ein return true/false mit Fehlerausgabe besser als einfach den Nicknamen durch Sternchen zu ersetzen?!


                    so eine sch*
                    Sowas macht man mit mod_access http://httpd.apache.org/docs/2.0/mod/mod_access.html


                    Die Variante ist nicht falsch, aber länger als mysql_fetch_assoc und komplizierter zu lesen wie ich finde


                    Also mein PHP gibt aussagekräftige Fehlermeldungen und meckert nicht nur vor sich rum ... geh mal auf php.net und achte darauf die anti-Mecker-Version zu laden.... *sarkasmus off* ernsthaft, so wäre es vernünftig, du musst dich irgendwo vertippt haben oder sonstwas, aber ohne Fehlermeldung lässt sich das Problem schlecht (gar nicht) lokalisieren

                    zu 1. würde ich bei einer anmledung auch machen, ist aber nur für einen kleinen ajax-chat, damit die ihren nick frei wählen können.

                    zu 2. wenn es für eine variante auch einen anständigen weg gibt
                    worin sich mein hinweis über scriptbesprechung von vorhin gleich bestärkt sieht..mod_access werd ich gleich mal lesen.

                    zu 3. achso.... falls ich richtig verstehe, ich soll das gleich schreiben, statt fetch_array, und kann es dann in den klammern weglassen !?

                    zu 4. es handelte sich auch um fehlende oder überflüssige zeichen,
                    aber damit wollt ich hier keinen belästigen..ging ja auch so

                    Kommentar


                    • #11
                      Re: Re: Re: Re: Re: funktion verbessern

                      Original geschrieben von bärlina
                      zu 3. achso.... falls ich richtig verstehe, ich soll das gleich schreiben, statt fetch_array, und kann es dann in den klammern weglassen !?
                      statt
                      PHP-Code:
                      while($row_badword mysql_fetch_array($sql_badwordMYSQL_ASSOC))
                      // das
                      while ($row_badword mysql_fetch_assoc($sql_badword)) 

                      Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                      bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                      Wie man Fragen richtig stellt

                      Kommentar

                      Lädt...
                      X