PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Reguläre Ausdrücke (preg_match bzw. ereg)



Reaper
06-03-2005, 20:02
Hi,

ich versuche einen String darauf zu überprüfen, dass nur bestimme Zeichen darin vorkommen dürfen (Alphabet inkl. üöäß, Ziffern sowie - _ . [ ] aber keine Leerzeichen etc.)
Habe es weder mit preg_match noch mit ereg hinbekommen, dass ein korrekter true/false Wert zurückgegeben wird...
Hat einer nen Tipp/ne Lösung für das Problem?

undefined
06-03-2005, 20:29
if (preg_match("/\S/", $str ) ) ...
mfg undefined

Reaper
06-03-2005, 21:03
\S ???

Was wollte mir der Autor damit sagen?!?

msi
06-03-2005, 21:58
Hi,

ich versuche einen String darauf zu überprüfen, dass nur bestimme Zeichen darin vorkommen dürfen (Alphabet inkl. üöäß, Ziffern sowie - _ . [ ] aber keine Leerzeichen etc.)
Habe es weder mit preg_match noch mit ereg hinbekommen, dass ein korrekter true/false Wert zurückgegeben wird...
Hat einer nen Tipp/ne Lösung für das Problem?

was ist denn mit pregmatch daran so schwer??



$code = "A-Za-Z0-9öäüÖÄÜ._";
$min = 2;
$max= 10;
if ( preg_match( "/^[$code]{$min,$max}$/", $str ) ) {
# true
} else {
# false
}


das überprüft ob nur die Zeichen A-Z, a-z, 0-9 öäü ÖÄÜ . und _ vorkommen.
Der String muss mindestens aus 2 und darf max. aus 10 Zeichen bestehen.

Wenn du willst, dass es egal ist wielange er ist, setze $max="";

Markus

Reaper
07-03-2005, 08:22
Ah OK das sieht etwas anderst aus, als das was ich versuch habe ( preg_match("/[0-9a-zA-Z_:.\-\[\]]+/", $text); )

kann ich dann den suchtext aber schon mit [0-9a-zA-Z_:.\-\[\]] setzen?

undefined
07-03-2005, 11:38
\S ???
Was wollte mir der Autor damit sagen?!?
na das was du geschrieben hast ;)

(Alphabet inkl. üöäß, Ziffern sowie - _ . [ ] aber keine Leerzeichen etc.)
\S ist nichts anders wie die Negation von \s also ist.

if (preg_match("/\S/", $str ) )...
Wenn kein Leerzeichen gefunden dann ....
Somit werden alle Zeichensätze zugelassen der Rest erklärt sich wohl von selbst ;)

undefined
07-03-2005, 11:55
Mal ein Beispiel in dem ich jedes Wort in ein Array schreibe ;)

<?php
$str = 'Ein Tag eines Administrators
Mo, 08:05
Die Woche fängt gut an. Anruf aus der Werbeabteilung, sie können eine Datei nicht finden. Habe ihnen die Verwendung des Suchprogramms "FDISK" empfohlen.
Hoffe, sie sind eine Weile beschäftigt.
08:25
Die Lohnbuchhaltung beschwert sich, ihre Netzwerkverbindung funktioniert nicht. Habe zugesagt, mich sofort darum zu kümmern. Anschließend meine Kaffeemaschine ausgestöpselt und ihren Server wieder angeschlossen.
Warum hört mir keiner zu, wenn ich sage, ich habe hier zu wenig Steckdosen?
Lohnbuchhaltung bedankt sich für die prompte Erledigung. Wieder ein paar glückliche User!';

echo utf8_encode( htmlspecialchars( $str, ENT_QUOTES, "utf-8" ) );

preg_match_all( "/([\S]+)/m", $str, $out );
echo "<pre>";
print_r( $out );
echo "<pre>";
?>

Reaper
07-03-2005, 18:54
Das Leerzeichen war nur als Beispiel gemeint *g*
();"'%&$§ usw. sollen türlich auch nicht vorkommen dürfen... sondern halt nur ein par bestimmte Zeichen.

(kenn mich mir regulären ausdrücken nicht besonders aus...)

msi
07-03-2005, 20:38
Ah OK das sieht etwas anderst aus, als das was ich versuch habe ( preg_match("/[0-9a-zA-Z_:.\-\[\]]+/", $text); )

kann ich dann den suchtext aber schon mit [0-9a-zA-Z_:.\-\[\]] setzen?

schon probiert? Ja es geht!! und das {$min,$max} kannst du auch durch ein + ersetzen wenn du mind. 1 willst und max egal ist!

Reaper
07-03-2005, 21:44
Ja habs gerade eben probiert, geht wunderbar :)
Danke schön!
Das min, max macht gleich ne zweite Abfrage überflüssig ;)