Hallo,
Hab ein Problem mit regulären Ausdrücken.
Ich lese eien Reihe von Files ein, und vergleiche eine Eingabe, ob diese schon mal in einem der Files vorkommt:
opendir(DIR,'users') or die "Cant open directory of users : $! \nPlease send a mail to $mailadmin to report this error\n";
while (defined($_ = readdir(DIR))) {
if ($_ =~ /^\d+?.cgi$/) {
open(FILE,"users/$_") or die "An error occured with $_ : $!\nPlease contact $mailadmin to report this error.\n";
flock FILE, 2;
local $/;
my $input = <FILE>;
close FILE;
encode_entities($name);
if ($input =~ /<name>$name</name>/i) {
$$error = 1;
$$nameerror = 'Der Name existiert bereits !';
}
}
}
closedir DIR;
In den Files kommt Fritzi, Toni und <xNeT//orKx> vor. Der Ausdruck erkennt Fritzi, Toni, (befinden sich auf in dem Files) aber <xNeT//orKx> nicht. Deswegen hab ich auch oben encode_entities($name) gesetzt, da ja <xNeT//orKx> nicht dasselbe wie <xNeT//orKx> ist. Wenn ich zwischen <name> und </name> aber <xNeT\/\/orKx> zur Probe eingebe, erkennt er <xNeT//orKx> im File dann auch.
Wie kann ich es hinbringen, dass die Eingabe <xNeT//orKx> auf <xNeT//orKx> im File matched. Mit encode_entities($name) geht es schon mal nicht, aber warum? Wenn ich <xNeT//orKx> normalerweise über encode_entities($name) laufen lassen würde, kommt <xNeT//orKx> raus. Warum matched es hier aber nicht und wie kann ich das Problem lösen?
$xNeTworKx.
Mit Computern lösen wir Probleme, die wir ohne sie gar nicht hätten.