Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

ereg-Funktion Anfängerfrage

Empfohlene Antworten

Veröffentlicht

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.


<?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!

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

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.

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.

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.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.