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

  • Jeffry
    hat ein Thema erstellt Rückgabewert von str_replace()?.

    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

  • nikosch
    antwortet
    Ich werde mir nächstes mal die 5 Sekunden Zeit nehmen.

    Einen Kommentar schreiben:


  • David
    antwortet
    Zitat von nikosch77-new Beitrag anzeigen
    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)?
    Ein Link zum Manual wäre gut

    Einen Kommentar schreiben:


  • Jeffry
    antwortet
    ich habs mir mal runtergeladen.
    danke für den hinweis...

    jetzt versuch ich ersmal das mit dem delimiter zu verstehen.
    thx @ all

    Einen Kommentar schreiben:


  • nikosch
    antwortet
    Ein Beispiel in der Hilfe sagt aber manchmal mehr als die reine Syntaxvervollständigung. Zudem sind oftmals wertvolle Tipps und Sciherheitshinweise enthalten. Online können auch die user notes hilfreich sein.

    Einen Kommentar schreiben:


  • Jeffry
    antwortet
    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

    Einen Kommentar schreiben:


  • nikosch
    antwortet
    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.

    Einen Kommentar schreiben:


  • Jeffry
    antwortet
    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...

    Einen Kommentar schreiben:


  • litterauspirna
    antwortet
    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!

    Einen Kommentar schreiben:


  • nikosch
    antwortet
    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

    Einen Kommentar schreiben:


  • Jeffry
    antwortet
    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...)

    Einen Kommentar schreiben:


  • nikosch
    antwortet
    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?

    Einen Kommentar schreiben:


  • Bullymeo
    antwortet
    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.

    Einen Kommentar schreiben:


  • dr.e.
    antwortet
    @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!

    Einen Kommentar schreiben:


  • litterauspirna
    antwortet
    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

    Einen Kommentar schreiben:

Lädt...
X