Ankündigung

Einklappen
Keine Ankündigung bisher.

Rückgabewert von str_replace()?

Einklappen

Neue Werbung 2019

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

  • Rückgabewert von str_replace()?

    Hallo zusammen.
    Ich wollte mal Fragen wie der Rückgabewert von str_replace() ist, wenn übereinstimmungen gefunden worden.

    Ich habe nämlich folgendes script geschrieben:
    wenn das textfeld 'username' leer ist soll eine fehlermeldung kommen das der user bitte einen namen hinschreiben soll.
    wenn man zahlen ins userfeld eingibt sollen die zahlen durch "" ersetzt werden.
    wenn der user jetzt hingeht und 123 als name hinschreibt wird 123 durch "" ersetzt aber es kommt nicht die fehlermeldung das der user einen namen hinschreiben soll...
    deswegen möchte ich machen, dass, wenn str_replace übereinstimmungen gefunden hat, dass eine fehlermeldung kommt, dass der name keine zahlen beinhalten darf.

    danke

    gruß
    jeffry

  • #2
    Wir sind hier nicht die Auskunft. Benutze das Manual für solche Fragen!

    Das beschriebene Verfahren ist ohnehin fragwürdig.
    [COLOR="#F5F5FF"]--[/COLOR]
    [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
    [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
    [COLOR="#F5F5FF"]
    --[/COLOR]

    Kommentar


    • #3
      Zitat von nikosch77-new Beitrag anzeigen
      Wir sind hier nicht die Auskunft. Benutze das Manual für solche Fragen!

      Das beschriebene Verfahren ist ohnehin fragwürdig.

      Huhu
      Bin noch anfänger in sachen PHP deswegen versuche ich halt alles irgendwie hinzubekommen, hauptsache es funktioniert ^^
      naja das manual sagt mir "Diese Funktion gibt eine Zeichenkette oder ein Array mit ersetzten Werten zurück."
      allerdings weiß ich jetzt nicht wie ich überprüfen kann ob etwas ersetzt wurde oder nicht

      gruß

      Kommentar


      • #4
        Das ist ganz einfach:
        Die Funktion str_replace($alt, $neu, $meinString) ändert eine Zeichenkette ($alt) durch eine andere ($neu) in einer string-Variablen ($meinString):
        Code:
        $meinString = "Hallo Deutschland";
        $meinString = str_replace("Deutschland", "Welt", $meinString);
        oder
        Code:
        $meinString = "Hallo Deutschland";
        $alt = "Hallo";
        $neu = "Welt";
        $meinString = str_replace($alt, $neu, $meinString);
        dieser Code ändert den String "$meinString" und legt ihn in "$meinString" wieder heinein
        alter Wert --> Hallo Deutschland
        neuer Wert --> Hallo Welt

        "str_replace(...)" findet keine Übereinstimmungen. Ist nicht seine Aufgabe; kann es nicht.

        Übereinstimmungen werden mit "Kontrollstrukturen" gefunden siehe "if(...)" oder "switch..."

        Kommentar


        • #5
          Zitat von nikosch77-new Beitrag anzeigen
          Wir sind hier nicht die Auskunft. Benutze das Manual für solche Fragen!

          Das beschriebene Verfahren ist ohnehin fragwürdig.
          Sorry, dass ich deine Bemerkung kommentiere.
          Ich finde es nicht sehr hilfreich für Anfängen, mit so einer d*** Phrase abgespeist zu werden.
          Nicht jeder ist als Meister vom Himmel gefallen.

          Ich ging davon aus, dass es sich hier um ein Forum handelt, in dem man Fragen hilfreich beantwortet bekommt... zumindest bin ich das aus anderen Foren gewohnt.

          An der "Tür" dieses Forums steht doch "...Einsteiger" oder irre ich mich?
          moment ich seh noch mal nach
          ...
          Doch... da steht "PHP Einsteiger" damit sind doch Anfänger gemeint, oder?

          Kommentar


          • #6
            Hallo!

            Wieso machst du so etwas mit str_replace? Nimm preg_match das ist für so etwas besser geeignet,weil warum willst bei einer falsch eingabe etwas ersetzen anstatt direkt auf alle falsch Eingaben direkt zu regieren!

            So in etwa könnte das aussehen!

            PHP-Code:
            if(!preg_match("#^[a-zäöüß _-]+#mi",$_POST['username']))
            {
               echo 
            msgBox("Der Username fehlt oder hat verbotene Zeichen! Erlaubte Zeichen sind a-zA-ZüöäÜÖÄß_- Leerzeichen! <br>".$link);
               exit();

            Damit legst du von vornherein was sein darf und was nicht fest und kannst auf alle Falscheingaben reagieren!
            str_replace ist für solche Vorhaben die absolut falsche Funktion! Lies im Manual oder auf den Seiten in meiner Signatur mal darüber nach! Peter Kropff hat das da ziemlich gut beschrieben!

            @nikosch
            bitte sei mir für die kleine Kritik nicht böse. Aber Anfänger haben es am Anfang oftmals schwer mit dem Manual klar zu kommen. Du hättest ihn eher darauf Aufmerksam machen sollen das die Funktion für sein Vorhaben fehl amPlatz ist und ihn eine bessere Alternative schreiben können! Solche Kommentare können blutige Anfänger oftmals auch demotivieren!

            mfg der litter
            Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
            [URL]http://www.lit-web.de[/URL]

            Kommentar


            • #7
              @Bullymeo & litterauspirna:
              Zitat von Bullymeo Beitrag anzeigen
              Sorry, dass ich deine Bemerkung kommentiere.
              Ich finde es nicht sehr hilfreich für Anfängen, mit so einer d*** Phrase abgespeist zu werden.
              Nicht jeder ist als Meister vom Himmel gefallen.

              [..]
              Ich kann mich nikosch nur anschließen. Es ist sicher noch kein Meister vom Himmel gefallen, aber um Meister zu werden, sollte man sich schleunigst angewöhnen zuerst einen Blick ins Manual zu werfen, ehe man Fragen stellt, die ohnehin schon durch das Manual beantwortet sind. Dieser Anspruch gilt dabei gleichermaßen für Anfänger, Fortgeschrittene und Profis.

              Damit ist das Thema für mich beendet!
              Viele Grüße,
              Dr.E.

              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
              1. Think about software design [B]before[/B] you start to write code!
              2. Discuss and review it together with [B]experts[/B]!
              3. Choose [B]good[/B] tools (-> [URL="http://adventure-php-framework.org/Seite/088-Why-APF"]Adventure PHP Framework (APF)[/URL][URL="http://adventure-php-framework.org"][/URL])!
              4. Write [I][B]clean and reusable[/B][/I] software only!
              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

              Kommentar


              • #8
                Zitat von dr.e.-new Beitrag anzeigen
                @Bullymeo & litterauspirna:

                Ich kann mich nikosch nur anschließen. Es ist sicher noch kein Meister vom Himmel gefallen, aber um Meister zu werden, sollte man sich schleunigst angewöhnen zuerst einen Blick ins Manual zu werfen, ehe man Fragen stellt, die ohnehin schon durch das Manual beantwortet sind. Dieser Anspruch gilt dabei gleichermaßen für Anfänger, Fortgeschrittene und Profis.

                Damit ist das Thema für mich beendet!
                verzeih mir...
                es geht NICHT darum, DASS er ihn darauf hingewisen hat,
                SONDERN WIE er es getan hat.
                Ich kann mich da nur litterauspirna anschließen.

                so!! mehr gibts wirklich nicht zu sagen.

                Kommentar


                • #9
                  Ich wollte mal Fragen wie der Rückgabewert von str_replace() ist, wenn übereinstimmungen gefunden worden.
                  Was soll man bitte auf eine solche Frage anderes antworten, wenn es 1. gut dokumentiert und 2. absolut logisch ist (was soll String Replace wohl zurückgeben)?

                  Nicht meine Antwort, sondern 'Bin Anfänger' gerät hier im Board zur Phrase (um nicht zu sagen Floskel) und entbindet wohl von jeglicher Selbstbeteiligung an der Problemlösung.
                  Oben geschriebenes ist nach wie vor meine Meinung und Ihr werdet wohl nicht erleben, dass ich sowas schreibe:
                  Das ist ganz einfach:
                  Die Funktion str_replace($alt, $neu, $meinString) ändert eine Zeichenkette ($alt) durch eine andere ($neu) in einer string-Variablen ($meinString):
                  Jetzt sag mir mal einer, was an dieser Antwort jetzt besser als am Manual Eintrag ist.
                  Und ob diese Antwort für einen Anfänger besser zu verstehen ist (oder nicht auch Nachlesen erfordert):
                  Wieso machst du so etwas mit str_replace? Nimm preg_match das ist für so etwas besser geeignet,weil warum willst bei einer falsch eingabe etwas ersetzen anstatt direkt auf alle falsch Eingaben direkt zu regieren!
                  Eine allgemeine Antwort für die Ausgangsfrage (die zweite) wäre: Überleg Dir eben mal, was ganz praktisch bei Zahlenangaben geschieht:

                  Code:
                  1/ Du prüfst, ob der String leer ist.
                  2/ Du ersetzt Zahlen in ''. Das Ergebnis ist ein leerer String.
                  Mal über eine andere Reihenfolge nachgedacht?
                  [COLOR="#F5F5FF"]--[/COLOR]
                  [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                  „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                  [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                  [COLOR="#F5F5FF"]
                  --[/COLOR]

                  Kommentar


                  • #10
                    Hallo zusammen.
                    Erstmal Danke für die vielen Antworten.
                    Ich hatte mich für str_replace() entschieden weil ich nicht verstanden habe was "("#^[a-zäöüß _-]+#mi"," das alles bedeutet.
                    saß eine stunde vor meinem script und hab versucht mit preg_replace die zahlen 1-10 zu verbieten. allerdings kamen bei mir immer ein delimiter error.
                    hab dann bei google nach einen anderen delimiter gesucht und auch welche gefunden nur wenn ich die einsetze kommt immer ein parse error..


                    mein str_replace() schnipsel sieht folgendermaßen aus:
                    PHP-Code:
                    $replace=array(1,2,3,4,5,6,7,8,9,0);
                    $name_ersetzt str_replace($replace,"",$name);
                    $eintrag="
                    <table border=\"1\" align=\"center\" width=\"600\" height=\"128\" style=\"width:600px;\">
                      <tr>
                        <td width=\"58\" valign=\"top\" bgcolor=#FF9900 height=\"19\">#
                    $inhalt_nummer</td>
                        <td width=\"248\" valign=\"top\" bgcolor=#FF9900 height=\"19\" colspan=\"2\">
                    $datum - $uhrzeit Uhr</td>
                      </tr>
                      <tr>
                        <td width=\"58\" valign=\"top\" bgcolor=#FF9900 height=\"19\">Name:</td>
                        <td width=\"248\" valign=\"top\" bgcolor=#FFFF66 height=\"19\" colspan=\"2\">
                    $name_ersetzt</td>
                      </tr>
                       <tr>
                        <td width=\"58\" valign=\"top\" bgcolor=#FF9900 height=\"19\">eMail:</td>
                        <td width=\"248\" valign=\"top\" bgcolor=#FFFF66 height=\"19\">
                    $email</td>
                        <td width=\"20\" valign=\"center\" bgcolor=#FFFF66 height=\"19\"><center><a href=\"mailto:
                    $email\"><img src=\"bilder/email.gif\"\ border=\"0\" width=\"25\" height=\"20\"></a></center></td>
                      </tr>
                      <tr>
                        <td width=\"58\" bgcolor=#FF9900 height=\"78\" valign=\"top\">Text:</td>
                        <td width=\"600\" bgcolor=#FFFF66 height=\"78\" valign=\"top\" colspan=\"2\" style=\"word-break:break-all;word-wrap:break-word\">
                    $text</td>
                      </tr></table>
                    <br>"
                    ;
                    ?> 


                    mein preg_replace() schnipsel sieht folgendermaßen aus:
                    PHP-Code:
                    <?php
                    $text 
                    stripslashes(nl2br($text));
                    include(
                    "smilies.inc.php");

                    $replace=preg_match(['1-9'],$name);
                    if(
                    $replace == 0)
                    {
                    $eintrag="
                    <table border=\"1\" align=\"center\" width=\"600\" height=\"128\" style=\"width:600px;\">
                      <tr>
                        <td width=\"58\" valign=\"top\" bgcolor=#FF9900 height=\"19\">#
                    $inhalt_nummer</td>
                        <td width=\"248\" valign=\"top\" bgcolor=#FF9900 height=\"19\" colspan=\"2\">
                    $datum - $uhrzeit Uhr</td>
                      </tr>
                      <tr>
                        <td width=\"58\" valign=\"top\" bgcolor=#FF9900 height=\"19\">Name:</td>
                        <td width=\"248\" valign=\"top\" bgcolor=#FFFF66 height=\"19\" colspan=\"2\">
                    $name_ersetzt</td>
                      </tr>
                       <tr>
                        <td width=\"58\" valign=\"top\" bgcolor=#FF9900 height=\"19\">eMail:</td>
                        <td width=\"248\" valign=\"top\" bgcolor=#FFFF66 height=\"19\">
                    $email</td>
                        <td width=\"20\" valign=\"center\" bgcolor=#FFFF66 height=\"19\"><center><a href=\"mailto:
                    $email\"><img src=\"bilder/email.gif\"\ border=\"0\" width=\"25\" height=\"20\"></a></center></td>
                      </tr>
                      <tr>
                        <td width=\"58\" bgcolor=#FF9900 height=\"78\" valign=\"top\">Text:</td>
                        <td width=\"600\" bgcolor=#FFFF66 height=\"78\" valign=\"top\" colspan=\"2\" style=\"word-break:break-all;word-wrap:break-word\">
                    $text</td>
                      </tr></table>
                    <br>"
                    ;
                    }
                    else
                    {
                    echo 
                    "Es sind keine Zahlen um Namen erlaubt";
                    }
                    ?>
                    (hier kommt immer dieser delimiter error...)

                    Kommentar


                    • #11
                      Auch wenn ich gleich wieder der Buhmann bin, @Jeffry: Du mußt anfangen, das Manual zu lesen. Und zwar am besten ganz vorne. Du kannst Dir nicht einfach eine Syntax ausdenken.
                      PHP-Code:
                      $replace=preg_match(['1-9'],$name); 
                      In dieser einen Zeile sind drei Fehler enthalten.
                      1/ der erste Parameter muß ein String sein. Strings sind in ' ' oder " " eingeschlossen
                      2/ Der Ausdruck ist falsch
                      2.1. Die Syntax lautet [0-9]
                      2.2. Aussen herum gehört ein Delimiter z.B. / / oder # #
                      3/ Logikfehler: Die Null ist auch eine Zahl. Auch Sonderzeichen ($ % § ... ) sollen sicher nicht im Namen vorkommen
                      [COLOR="#F5F5FF"]--[/COLOR]
                      [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                      „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                      [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                      [COLOR="#F5F5FF"]
                      --[/COLOR]

                      Kommentar


                      • #12
                        Nun schlies ich mich nikosch auch an!

                        Du solltest wirklich mal das Manual benutzen und lesen was macht str_replace,preg_match,preg_replace,sonst kommst du nicht weiter wenn du das Prinzip nicht verstehst. Das ist wichtig daran. Lies mal im Manual wie preg_match funktioniert und wie du es einsetzt! Eigeninitiative und ein bisschen Verständnis sind schon wichtig und kann man fordern!

                        Hier kommt dieser delimiter error
                        Ja logisch kommt der,du hast in deinem Script ja gar keine delimiter! Ich habe dir ein kleines Beispiel für preg_match geschrieben und du machst so einen Mist draus? Das sagt mir du hast weder darüber gelesen noch hast du es verstanden.

                        mfg der litter

                        edith:
                        nikosch war mal wieder schneller als ich. nikosch man kommt aber besser wenn in preg_match alles an Zeichen angibt was zugelassen ist und in der Prüfung es einfach auf !preg_match prüft. Somit wird alles als falsch angesehen was nicht gematcht wird!
                        Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
                        [URL]http://www.lit-web.de[/URL]

                        Kommentar


                        • #13
                          Zitat von nikosch77-new Beitrag anzeigen
                          Auch wenn ich gleich wieder der Buhmann bin, @Jeffry: Du mußt anfangen, das Manual zu lesen. Und zwar am besten ganz vorne. Du kannst Dir nicht einfach eine Syntax ausdenken.
                          PHP-Code:
                          $replace=preg_match(['1-9'],$name); 
                          In dieser einen Zeile sind drei Fehler enthalten.
                          1/ der erste Parameter muß ein String sein. Strings sind in ' ' oder " " eingeschlossen
                          2/ Der Ausdruck ist falsch
                          2.1. Die Syntax lautet [0-9]
                          2.2. Aussen herum gehört ein Delimiter z.B. / / oder # #
                          3/ Logikfehler: Die Null ist auch eine Zahl. Auch Sonderzeichen ($ % § ... ) sollen sicher nicht im Namen vorkommen

                          super !!
                          danke, das hat mir weitergeholfen, jetzt hab ich es auch verstanden...
                          leute, wirklich ich habe das manual gelesen aber irgendwie kam ich damit nicht wirklich zurecht...

                          Kommentar


                          • #14
                            Es gibt eine Super chm-Version des Manuals für Windows. Da kommst Du über den Index an jeden Befehl einfach heran und kannst die Syntax nachlesen.
                            [COLOR="#F5F5FF"]--[/COLOR]
                            [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                            „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                            [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                            [COLOR="#F5F5FF"]
                            --[/COLOR]

                            Kommentar


                            • #15
                              Zitat von nikosch77-new Beitrag anzeigen
                              Es gibt eine Super chm-Version des Manuals für Windows. Da kommst Du über den Index an jeden Befehl einfach heran und kannst die Syntax nachlesen.
                              Danke für den Tipp...
                              ich benutze den editor PHPEdit.
                              Wenn ich da z.b. preg_re... schreibe dann zeigt er mir automatisch die funktion an und was da rein gehört

                              Kommentar

                              Lädt...
                              X