Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Array und str_replace Problem

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Array und str_replace Problem

    Hallo, ich arbeite gerade an einer Shoutbox an der "Black List" (Wörter die durch *** ersetzt werden).

    Dazu schreibe ich immer alle Wört zeilenweise in eine txt Datei.

    Bsp (inhalt von data/black/word.txt):
    Code:
    Wort1
    Wort2
    mit str_replace soll der das Wort duch *** ersetzt werden. Der Code:

    Code:
    $array = file("data/black/word.txt");
    $nachricht = str_replace("$array[0]", '***', $nachricht);
    $nachricht = str_replace("$array[1]", '***', $nachricht);
    Doch wenn ich jetzt Wort1 und Wort2 in die Shoutbox eingebe kommt folgende Antwort:

    Wort1 ***

    Also das 1. Wort wird völlig ignoriert.

    Kann mir da einer helfen?

  • #2
    1. trim vergessen
    2.
    "$array[0]"
    http://www.php.de/wiki-php/index.php...n_Doppelquotes

    Kommentar


    • #3
      Haste heute geburtstag? oder wieso sehe ich kein Lerne Grundlagen link?

      Kommentar


      • #4
        Hab gerade meine Herztabletten genommen

        Kommentar


        • #5
          hmm also soll ich das so machen:

          "/$array[1]/"

          aber das geht auch nicht

          Kommentar


          • #6
            Einfach die Anführungsstriche weglassen $array[1]

            Bei file() hast du die Zeilenumbrüche mit drin. Wie nikosch schon schrieb, rtrim() verwenden!

            Kommentar


            • #7
              Zitat von adminlukas Beitrag anzeigen
              Hallo, ich arbeite gerade an einer Shoutbox an der "Black List" (Wörter die durch *** ersetzt werden).

              Dazu schreibe ich immer alle Wört zeilenweise in eine txt Datei.

              Bsp (inhalt von data/black/word.txt):
              Code:
              Wort1
              Wort2
              mit str_replace soll der das Wort duch *** ersetzt werden. Der Code:

              Code:
              $array = file("data/black/word.txt");
              $nachricht = str_replace("$array[0]", '***', $nachricht);
              $nachricht = str_replace("$array[1]", '***', $nachricht);
              Doch wenn ich jetzt Wort1 und Wort2 in die Shoutbox eingebe kommt folgende Antwort:

              Wort1 ***

              Also das 1. Wort wird völlig ignoriert.

              Kann mir da einer helfen?
              PHP-Code:
              $badwords file(/* your path */);

              // strip returns and filter
              foreach ( $badwords as $word ) { 
                 
              $word rtrim($word"\r"); 
                 
              $message str_replace($word'**PIEP**'$nachricht);

              andernfalls wirst du jedesmal wenn du ein neues wort der liste hinzufügst in deinem PHP Code rumrödeln und eine neue zeile hinzufügen

              Kommentar


              • #8
                Ybrigens kann str_replace auch Arrays. Also besser damit nutzen und für file FILE_IGNORE_NEW_LINES setzen…

                Kommentar


                • #9
                  hmm danke, aber das geht auch nicht (eigentlich genau so wie vorher) hab auch extra ein screen gemacht , er sperret einfach immer nur das untere wort
                  .hab hier auch gesamten code:
                  PHP-Code:
                  <?php


                  //Anfang Empfang

                  $user $_POST["user"]; //Username 
                  $nachricht $_POST["text"]; //Nachricht

                  $admin $_POST["admin"];


                  //Ende Empfang

                  //Anfang Auswertung und verarbeitung der Nachricht (bsp: smiley text in HTML umwandeln)
                  if($nachricht ==""){
                  $er "1";
                  }else{



                  //Auf HTML prüfen
                  $nachricht str_replace("<"'&lt;'$nachricht);
                  $nachricht str_replace(">"'&gt;'$nachricht);
                  //Ende HTML


                     //Smlieystext in Bilder umwandeln

                  $nachricht str_replace("[-:"'<img src="shoutbox/images/smiles1.png" >'$nachricht);

                  $nachricht str_replace("(-:"'<img src="shoutbox/images/smiles2.png" >'$nachricht);

                  $nachricht str_replace(")-:"'<img src="shoutbox/images/smiles3.png" >'$nachricht);

                  $nachricht str_replace("(=:"'<img src="shoutbox/images/smiles4.png" >'$nachricht);

                  $nachricht str_replace("}-:"'<img src="shoutbox/images/smiles5.png" >'$nachricht);

                  $nachricht str_replace("?-:"'<img src="shoutbox/images/smiles6.png" >'$nachricht);
                     
                  //Ende Smiley


                  //Auf Black Words prüfen

                  $badwords file("data/black/word.txt");


                  foreach ( 
                  $badwords as $word ) { 
                     
                  $word rtrim($word"\r"); 
                     
                  $nachricht str_replace($word'**PIEP**'$nachricht);
                  }  



                  //Ende Auswertung

                  //Zeit ermitteln
                  $timestamp time();
                  $datum date("d.m.Y - H:i"$timestamp);

                  //Ende Zeit ermitteln

                  //Speichern


                  $zahl file_get_contents('data/zahl.txt');



                  if(
                  $admin==""){
                  $save'<img alt="" src="shoutbox/images/user.png" /> '.$user.'<br><img alt="" src="shoutbox/images/comment.png" /> '.$nachricht.'<br>Zeit: '.$datum.'</p><hr />';
                  $save1'<img style="border:0px;" src="shoutbox/images/cross.png"><a href="del.php?l=savea&i='.$zahl.'">Diesen Beitrag l&ouml;schen</a><p><img alt="" src="shoutbox/images/user.png" /> '.$user.'</p><p><img alt="" src="shoutbox/images/comment.png" /> '.$nachricht.'</p><p>Zeit: '.$datum.'</p><hr />';

                  }else{

                  $save'<img alt="" src="shoutbox/images/admin.gif" /> <span style="color: rgb(255, 0, 0); ">'.$user.'</span><br><img alt="" src="shoutbox/images/comment.png" /> '.$nachricht.'<br>Zeit: '.$datum.'<br><hr />';
                  $save1'<img style="border:0px;" src="shoutbox/images/cross.png"><a href="del.php?l=savea&i='.$zahl.'">Diesen Beitrag l&ouml;schen</a><p><img alt="" src="shoutbox/images/admin.gif" /> <span style="color: rgb(255, 0, 0); ">'.$user.'</span></p><p><img alt="" src="shoutbox/images/comment.png" /> '.$nachricht.'</p><p>Zeit: '.$datum.'</p><hr />';

                  }
                  $zahl $zahl 1;


                  $alt file_get_contents('data/admin.txt');
                  $new1 "$save1 
                  $alt";

                  $dateihandle1 fopen("data/zahl.txt","w");

                      
                  fwrite($dateihandle1$zahl);

                  $dateihandle2 fopen("data/admin.txt","w");

                      
                  fwrite($dateihandle2$new1);

                  $dateihandle3 fopen("data/zahl.txt","w");

                      
                  fwrite($dateihandle3$zahl);



                  $alt file_get_contents('data/data.txt');
                  $new "$save 
                  $alt";
                  $dateihandle fopen("data/data.txt","w");
                      
                  fwrite($dateihandle$new);
                  //ende Speichern
                  echo"Nachricht wurde erfolgreich gesendet!";
                  ?>

                  Kommentar


                  • #10
                    Manual lesen: http://de2.php.net/manual/en/function.rtrim.php

                    Du ersetzt nur \r, warum auch immer tr0y das mit reingeschrieben hat, lass den 2ten Parameter weg. Das passiert wenn man sich nicht damit beschäftigt sondern nur copy & paste macht.

                    Kommentar


                    • #11
                      PHP-Code:
                      $dateihandle1 fopen("data/zahl.txt","w");

                          
                      fwrite($dateihandle1$zahl);

                      $dateihandle2 fopen("data/admin.txt","w");

                          
                      fwrite($dateihandle2$new1);

                      $dateihandle3 fopen("data/zahl.txt","w");

                          
                      fwrite($dateihandle3$zahl);



                      $alt file_get_contents('data/data.txt');
                      $new "$save 
                      $alt";
                      $dateihandle fopen("data/data.txt","w");
                          
                      fwrite($dateihandle$new); 
                      Sowohl zahl.txt als auch data.txt wird jeweils 2 mal geöffnet und beschrieben - ich hoffe dir ist die Bedeutung des 'w' Parameters bei fopen bewusst. Desweiteren öffnest du die Dateien erneut, bevor das alte Handle geschlossen wird, dazwischen wird nochmal der Inhalt ausgelesen... alles in allem Kraut und Rüben, darf man Fragen was das werden soll wenns fertig ist?

                      Kommentar


                      • #12
                        Vielen Dank, habe ich übersehen

                        Kommentar

                        Lädt...
                        X