SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Webseiten professionell erstellen

Webseiten professionell erstellen zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP Grundlagen

PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 23.08.2003, 11:18:09
web-wg web-wg ist offline
Anfänger
 
Registriert seit: May 2003
Ort: Hannover
Beiträge: 34
Sonderzeichen entfernen...

Hi, ich möchte aus $benutzerid auf Sonderzeichen überprüfen.
Sie darf n ur aus Buchstaben und Zahlen bestehen - wenn doch Sonderzeichen dann soll eine Fehlermeldung kommen.

Gibt es dafür einen Befehl oder mus ich auf jedes Sonderzeichen einzeln überprüfen...

Gruß

web-wg
Mit Zitat antworten
  #2  
Alt 23.08.2003, 12:12:23
sourcecode sourcecode ist offline
Junior Member
 
Registriert seit: May 2003
Beiträge: 287
Du kannst zählen lassen, wie oft ein Zeichen in einem String vorkommt:

PHP-Code:
substr_count("Mississippi","s"); 
würde 4 zurückliefern. Damit kannst du dir ja dann z.B. eine Funktion basteln, auf die du immer wieder zurückgreifen kannst. Entweder du zählst alle ungültigen Zeichen und es muss 0 zurückgeliefert werden, oder du zählst alle gültigen Zeichen, und ihre Anzahl muss mit der Länge des Strings übereinstimmen. Da die Zeichen aufeinanderfolgen, auch Schleifen anwenden. Wenn der String nur aus Buchstaben und Zahlen bestehen darf, z.B.:
PHP-Code:
function only_alphanumeric($String) {
$Länge strlen($String);
$Anzahl 0;
// Großbuchstaben
for ($a=65;$a<91;$a++) {
$b chr($a);
$Anzahl += substr_count($String,$b);
}
// Kleinbuchstaben
for ($a=97;$a<123;$a++) {
$b chr($a);
$Anzahl += substr_count($String,$b);
}
// Ziffern
for ($a=0;$a<10;$a++) {
$Anzahl += substr_count($String,$a);
}
return 
$Länge == $Anzahl;
}
$benutzerid "IrgendeineZeichenkette";
if (
only_alphanumeric($benutzerid)) {
echo 
"Alles bestens. Sind nur Buchstaben und Ziffern enthalten.";

Habs nicht geprüft, sollte aber funktionieren.
Mit Zitat antworten
  #3  
Alt 24.08.2003, 02:51:15
web-wg web-wg ist offline
Anfänger
 
Registriert seit: May 2003
Ort: Hannover
Beiträge: 34
Super! Vielen Dank!

Stimmte aber nicht ganz,
die Zahlenabfrage war nicht ganz richtig und ich habe es mal um "_" und "-" erweitert...

hier die Funktion, falls sie noch jemanden nützt ;-)

PHP-Code:
function keine_sonderzeichen($string)

{
$lang strlen($string);
$Anzahl 0;
// Großbuchstaben
for ($a=65;$a<91;$a++) {
$b chr($a);
$anzahl += substr_count($string,$b);
}
// Kleinbuchstaben
for ($a=97;$a<123;$a++) {
$b chr($a);
$anzahl += substr_count($string,$b);
}

// Ziffern
for ($a=48;$a<58;$a++) {
$b chr($a);
$anzahl += substr_count($string,$b);
}
// -
for ($a=45;$a<46;$a++) {
$b chr($a);
$anzahl += substr_count($string,$b);
}
// _
for ($a=95;$a<96;$a++) {
$b chr($a);
$anzahl += substr_count($string,$b);
}

return 
$lang == $anzahl;

der Aufruf:
PHP-Code:
if (keine_sonderzeichen($benutzerid)) {
echo 
"Alles bestens. Sind nur Buchstaben und Ziffern enthalten.";
}
else echo
"falsch"
gute N8

web-wg
Mit Zitat antworten
  #4  
Alt 24.08.2003, 07:53:52
c4 c4 ist offline
SELFPHP Guru
 
Registriert seit: Jul 2002
Ort: Oberursel
Alter: 54
Beiträge: 4.748
Oder einfach so:
PHP-Code:
<?php
$str
='DasisteinTest';

if (
preg_match("|^(a-zA-Z0-9)|"$str)>0) {
    echo 
"Zeugs drin.";
}
else {
    echo 
"Kein Zeugs drin.";
}

exit;
?>
__________________
sic!
--> http://dbCF.de/
Mit Zitat antworten
  #5  
Alt 24.08.2003, 10:27:44
sourcecode sourcecode ist offline
Junior Member
 
Registriert seit: May 2003
Beiträge: 287
1) Funktionsname "only_alphanumeric" hört sich irgendwie besser an als "keine_sonderzeichen".
2) Kannst die Variable ruhig $Länge nennen. PHP hat keine Probleme bei Umlauten.
3) Wenn du oben $Anzahl = 0 schreibst, solltest du dann auch bei substr_count jeweils $Anzahl und nicht $anzahl schreiben. PHP unterscheidet Groß- und Kleinschreibung.
4) Das bei den Ziffern stimmt schon. Da brauchst du nicht den Umweg über ihren Hexadezimalwert gehen, weils ja Zahlen sind. Nur bei den Buchstaben wars eben nötig, weil es sowas wie for ($a = "A"; $a =< "Z"; $a++) eben nicht gibt und nunmal eine Schleife am sinnvollsten ist, weil die Buchstaben ja nebeneinander liegen.
5) Für - und _ kannst du dir die Schleifen und den Umweg über chr() sparen. Da kannst du direkt schreiben:
PHP-Code:
$Anzahl += substr_count($String,"-");
$Anzahl += substr_count($String,"_"); 
6) Pregmatch find ich unnötig. Hab ich bisher noch nie verwendet. Da musst du ja aufpassen, dass keines der nicht zu verwendenden Sonderzeichen eines ist, das da eine besondere Bedeutung hat, sonst musst du dir wieder überlegen, wie du das da escapen musst.
7) So eine Funktion wie only_alphanumeric verwende ich selber bei meiner Nutzeranmeldung, bloß hat sie einen anderen Namen, weil nur wenige Zeichen nicht erlaubt sind.

Geändert von sourcecode (24.08.2003 um 10:33:48 Uhr)
Mit Zitat antworten
  #6  
Alt 24.08.2003, 10:37:52
c4 c4 ist offline
SELFPHP Guru
 
Registriert seit: Jul 2002
Ort: Oberursel
Alter: 54
Beiträge: 4.748
Zitat:
2) Kannst die Variable ruhig $Länge nennen. PHP hat keine Probleme bei Umlauten
Grausam, aber wahr. Ich rate trotzdem mal davon ab. Einerseits macht man das einfach nicht (Prinzipien und so), andererseits können andere Leute Probleme mit den Umlauten bekommen und 'dürfen' dann alles anpassen, nur weil Du Umlaute genutzt hast.
Macht sich auch schlecht, wenn Du Umlaute in Variablennamen gewohnt bist und nebenbei vielleicht noch mit Perl, C++ oder anderen Sprachen arbeitest, die Umlaute in Bezeichnern überhaupt nicht mögen.
__________________
sic!
--> http://dbCF.de/
Mit Zitat antworten
  #7  
Alt 24.08.2003, 11:44:01
Progman Progman ist offline
Member
 
Registriert seit: Apr 2002
Beiträge: 821
Progman eine Nachricht über ICQ schicken
Ich hab keine Ahnung was ihr hier macht aber ich würde einfach folgendes machen:

PHP-Code:
<?php
   $text 
"text";
   
var_dump(ctype_alnum($text));
?>

http://www.php.net/ctype
__________________
PHP-Tutorial - PHP-FAQ - PHP-Manual
HTMLWiki
Mit Zitat antworten
  #8  
Alt 24.08.2003, 12:23:17
sourcecode sourcecode ist offline
Junior Member
 
Registriert seit: May 2003
Beiträge: 287
Zitat:
Original geschrieben von Progman
Ich hab keine Ahnung was ihr hier macht aber ich würde einfach folgendes machen:

PHP-Code:
<?php
   $text 
"text";
   
var_dump(ctype_alnum($text));
?>

http://www.php.net/ctype
Da kannst du aber die Zeichen nicht selbst bestimmen, die enthalten sein dürfen. Außerdem macht doch das Entwerfen eigener Funktionen auch Spaß.
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 13:11:08 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt