Veröffentlicht 1. Januar 200520 j Moinsen ! Ich möchte einfach einen String dahingehend überprüfen, ob er aus bis zu eintausend beliebigen Kleinbuchstaben von a bis z ohne umlaute wie z.B. ä besteht. Dazu habe ich folgenden PHP-Quellcode erstellt: <?php $teststring="Irgendein freakiger Testtext"; $muster=([a-z]){1,1000}; $ergebnis=ereg($muster,$teststring); if ($ergebnis===true) echo("der teststring entspricht dem muster"); else echo("der teststring entspricht nicht dem muster"); ?> Irgendwie haut das aber nicht hin.Ich vermute einen SyntaxFehler in der Zeile: $muster=([a-z]){1,1000}; Da ich von PHP aber noch nicht allzu viel Ahnung habe, könnten auch gröbere Denkfehler drin stecken. Kann mir da jemand weiterhelfen? Thx and greetz.
1. Januar 200520 j <?php $teststring="Irgendein freakiger Testtext"; $muster=([a-z]){1,1000}; $ergebnis=ereg($muster,$teststring); [B]if ($ergebnis===true)[/B] echo("der teststring entspricht dem muster"); else echo("der teststring entspricht nicht dem muster"); ?> in der Fettmarkierten Zeile hast du was falsch einen Vergleich wird nur mit == Gleichheitszeichen erstellt. Zu dem anderen kann ich leider nichts sagen, da ich damit noch nie was zu tun hatte!
1. Januar 200520 j in der Fettmarkierten Zeile hast du was falsch einen Vergleich wird nur mit == Gleichheitszeichen erstellt. Zu dem anderen kann ich leider nichts sagen, da ich damit noch nie was zu tun hatte! Das ist nicht korrekt. In diesem Fall kann ein Vergleich mit "===" durchgeführt werden! zum Topic: <?php $teststring="Irgendein freakiger Testtext"; $muster="([a-z]){1,1000}"; // hier haben die "" gefehlt $ergebnis=ereg($muster,$teststring); if ($ergebnis===true) echo("der teststring entspricht dem muster"); else echo("der teststring entspricht nicht dem muster"); ?> [/PHP] ob bei dieser RegEx auch die umlaute ausgeschlossen sind kann ich nicht direkt sagen
1. Januar 200520 j Moinsen ! Bezüglich der "===" : In diesem Fall können tatsächlich drei Gleichheitszeichen verwendet werden.Es ist der sog. Identitätsoperator.Nichtsdestotrotz habe ich es mal mit nur zwei Gleichheitszeichen probiert; hat aber nichts gebracht. Aufgrund von kills Empfehlung habe ich die dritte Zeile meines Quellcodes korrigiert: $muster="([a-z]){1,1000}"; Das hat mich zwar etwas weitergebracht aber das Programm läuft dennoch nicht ganz rund. Es erscheint jetzt immer das Ergebnis: "der teststring entspricht nicht dem muster" auch wenn ich den Testtext, also $teststring dem Muster ($muster) angepaßt habe. Wenn das Programm ausgeführt wird, kommt zusätzlich noch folgende Fehlermeldung: Warning: ereg() [function.ereg]: REG_BADBR in C:\froshky\WebServer\apachefriends\xampp\htdocs\test01.php on line 4 Wenn es tatsächlich an "line 4" liegt, wäre ein Fehler in der Zeile: $ergebnis=ereg($muster,$teststring); Kann nochmal jemand weiterhelfen? Thx and greetz.
2. Januar 200520 j Bei ereg() ist nicht der zweite Parameter die Anzahl, sondern der dritte. ereg() erwartet folgende Parameter: 1. Suchmuster (String) 2. Zeichenkette (String) 3. Anzahl der Suchmuster (Array) [optionaler Parameter] Du hast aber nur 2... Anstatt ereg() sollte man laut http://www.php-faq.de/q/q-regexp-ereg.html auch eher preg_match() nehmen.
2. Januar 200520 j Moinsen ! Das mit der preg_match()-Funktion habe ich mal ausprobiert und scheint auch zu klappen. Aber durch meine CodeZeile: $muster="([a-z]){1,1000}"; wird auch eine Übereinstimmung gefunden, wenn Großbuchstaben im Testtext vorhanden sind, daher habe ich mal die Bedingung umgedreht: $muster="([A-ZäÄöÖüÜ]){1,1000}"; und somit alle nichterwünschten Zeichen ausgeschlossen. Hier nun mein kompletter Quellcode: <?php $teststring="irgendein freakiger Testtext"; $muster="([A-ZäÄöÖüÜ]){1,1000}"; if (preg_match("/$muster/","$teststring")) { echo("der teststring entspricht nicht dem muster"); } else { echo("der teststring entspricht dem muster"); } ?> Ist jetzt zwar noch nicht hundertprozentig das, was ich suche, aber schon mal nahe dran.Ich werde mir demnächst dann nochmal die preg_match()-Funktion genauer ansehen. Greetz.
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.