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
Ankündigung
Einklappen
Keine Ankündigung bisher.
Rückgabewert von str_replace()?
Einklappen
Neue Werbung 2019
Einklappen
X
-
Rückgabewert von str_replace()?
Stichworte: -
-
Zitat von nikosch77-new Beitrag anzeigenWas 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)?
Einen Kommentar schreiben:
-
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:
-
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:
-
Zitat von nikosch77-new Beitrag anzeigenEs 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.
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:
-
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:
-
Zitat von nikosch77-new Beitrag anzeigenAuch 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);
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:
-
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
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:
-
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);
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:
-
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";
}
?>
Einen Kommentar schreiben:
-
Ich wollte mal Fragen wie der Rückgabewert von str_replace() ist, wenn übereinstimmungen gefunden worden.
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):
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!
Code:1/ Du prüfst, ob der String leer ist. 2/ Du ersetzt Zahlen in ''. Das Ergebnis ist ein leerer String.
Einen Kommentar schreiben:
-
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!
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:
-
@Bullymeo & litterauspirna:
Zitat von Bullymeo Beitrag anzeigenSorry, 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.
[..]
Damit ist das Thema für mich beendet!
Einen Kommentar schreiben:
-
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();
}
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:
Einen Kommentar schreiben: