PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : problem mit regex


Socrates
26.01.2007, 08:01:34
Hallo!
Ich habe mal wieder ein kleines Porblem. Ich überprüfe per php Formularfelder, bevor eine E-Mail abgeschickt wird. Ich überprüfe dabei unter anderem mit einem regex, ob eine gültige E-Mail adresse angegeben ist. Ich erhalte folgende Fehlermeldung:

Warning: preg_match(): Unknown modifier '+' in /home/redway/www/weiterempfehlen.php on line 460

Mein Quelltext sieht so aus:

<?php
if($_REQUEST['Send'] && !empty($_REQUEST['ab']) && !empty($_REQUEST['abma']) && !empty($_REQUEST['em']) && !empty($_REQUEST['be'])&& !empty($_REQUEST['ma'])&& preg_match('[\w-]+(?:\.[\w-]+)*@(?:[\w-]+\.)+[a-zA-Z]{2,7}', $_REQUEST['abma'])&& preg_match('[\w-]+(?:\.[\w-]+)*@(?:[\w-]+\.)+[a-zA-Z]{2,7}', $_REQUEST['em']))
{
$timestamp = time();
$time = date("Y-m-d H:i:s",$timestamp);
$abmail = $_REQUEST["abma"];
$absender = $_REQUEST["ab"];
$absender .= "<";
$absender .= $_REQUEST["abma"];
$absender .= ">";
$empfaenger = $_REQUEST["em"];
$reply = 'JUF MAILER<redway@puk.de>';
$betreff = $_REQUEST["be"];
$mail = $_REQUEST["ma"];
$mail .= "</br><table border=\"0\" width=\"300\"><tr><td><hr>";
$mail .= "<font face=\"Arial\" color=\"#000000\" size=\"2\">Besucht das&nbsp;</font><font face=\"Arial\" color=\"#e80000\" size=\"2\"><b>Junge Forum</b></font></br>";
$mail .= "<a href=\"http://www.puk.de/redway\"target=\"_blank\"><font face=\"Arial\" color=\"#000000\" size=\"2\">http://www.puk.de/redway</font></a></td></tr></table>";
$mail = stripslashes($mail);
$mail = nl2br($mail);
$mail = str_replace("\n","",$mail);
$mail = str_replace("\r","",$mail);
$mail = str_replace("\t","",$mail);
$mail = str_replace("\v","",$mail);
$mail = str_replace("\0","",$mail);
$mail = str_replace(" "," ",$mail);
$mail = ereg_replace("ä","&auml;",$mail);
$mail = ereg_replace("ü","&uuml;",$mail);
$mail = ereg_replace("ö","&ouml;",$mail);
$mail = ereg_replace("Ä","&Auml;",$mail);
$mail = ereg_replace("Ü","&Uuml;",$mail);
$mail = ereg_replace("Ö","&Ouml;",$mail);
$mail = ereg_replace("ß","&szlig;",$mail);

$header = 'MIME-Version: 1.0' . "\r\n";
$header .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$header .= 'From:' . $absender . "\r\n";
$header .= 'Reply-To:' . $reply . "\r\n";
$header .= 'Return-Path: <redway@puk.de>' . "\r\n";
$header .= 'Sender: JUF Mailer<redway@puk.de>' . "\r\n";
$header .= 'Organisation: Junges Forum' . "\r\n";
$header .= 'Date:' . $time . "\r\n";
$header .= 'X-Mailer: PHP/' . phpversion() . "\r\n";
$header .= 'X-Sender-IP: ' . $REMOTE_ADDR . "\r\n";

echo "
<font face=\"Arial\" size =\"2\" color=\"#e80000\">
<b>Absender:&nbsp;&nbsp;</b>
</font>
<font face=\"Arial\" size =\"2\" color=\"#000000\">
$absender
</font>
</br>
<font face=\"Arial\" size =\"2\" color=\"#e80000\">
<b>Empf&auml;nger E-Mail Adresse:&nbsp;&nbsp;</b>
</font>
<font face=\"Arial\" size =\"2\" color=\"#000000\">
$empfaenger
</font>
</br>
<font face=\"Arial\" size =\"2\" color=\"#e80000\">
<b>Betreff:&nbsp;&nbsp;</b>
</font>
<font face=\"Arial\" size =\"2\" color=\"#000000\">
$betreff
</font>
</br>
<font face=\"Arial\" size =\"2\" color=\"#e80000\">
<b>Nachricht:</b>
</font>
</br>
<font face=\"Arial\" size =\"2\" color=\"#000000\">
$mail
</font>
</br>
</br>
";

mail($empfaenger, $betreff, $mail, $header);
}
else
{
?>
F&uuml;llen Sie alle Formularfelder korrekt aus:
<form action="<?php echo$_SERVER['PHP_SELF']; ?>" method="post">
<?php
if($_REQUEST['Send'] && empty($_REQUEST['ab']))
{
echo"<h1>Bitte geben Sie ihren Namen ein!</h1>";
}
if($_REQUEST['Send'] && empty($_REQUEST['abma']))
{
echo"<h1>Bitte geben Sie ihre E-Mail Adresse ein!</h1>";
}
if($_REQUEST['Send']&& !preg_match('[\w-]+(?:\.[\w-]+)*@(?:[\w-]+\.)+[a-zA-Z]{2,7}', $_REQUEST['abma']))
{
echo"<h1>Bitte geben Sie eine korrekte E-Mail Adresse an!</h1>";
}
if($_REQUEST['Send'] && empty($_REQUEST['em']))
{
echo"<h1>Bitte geben Sie die E-Mail Adresse des Empf&auml;ngers ein!</h1>";
}
if($_REQUEST['Send']&& !preg_match('[\w-]+(?:\.[\w-]+)*@(?:[\w-]+\.)+[a-zA-Z]{2,7}', $_REQUEST['em']))
{
echo"<h1>Bitte geben Sie eine korrekte Empf&auml;nger Adresse an!</h1>";
}
if($_REQUEST['Send'] && empty($_REQUEST['be']))
{
echo"<h1>Bitte geben Sie einen Betreff ein!</h1>";
}
if($_REQUEST['Send'] && empty($_REQUEST['ma']))
{
echo"<h1>Bitte geben Sie eine Nachricht ein!</h1>";
}
?>
<table border="0">
<tr>
<td><h1>Ihr Name</h1></td>
<td><input type ="text" name="ab" value="<?php echo$_REQUEST['ab']; ?>" size="30"></td>
</tr>
<tr>
<td><h1>Ihre E-Mail Adresse</h1></td>
<td><input type ="text" name="abma" value="<?php echo$_REQUEST['abma']; ?>" size="30"></td>
</tr>
<tr>
<td><h1>Empf&auml;nger E-Mail Adresse</h1></td>
<td><input type ="text" name="em" value="<?php echo$_REQUEST['em']; ?>" size="30"></td>
</tr>
<tr>
<td><h1>Betreff</h1></td>
<td><input type ="text" name="be" value="<?php echo$_REQUEST['be']; ?>" size="30"></td>
</tr>
<tr>
<td><h1>Nachricht</h1></td>
<td><textarea name= "ma" cols="27" rows="10" value="<?php echo$_REQUEST['ma']; ?>"></textarea></td>
</tr>
<tr>
<td></td>
<td><input name="Send" type="submit" value="send"><input type="reset" value="reset"></td>
</tr>
</form>
</table>
<?php
}
?>

Ich hoffe ihr könnt mir sagen, was mit meinem Regex falsch gelaufen ist!
MfG, Andy

CIX88
26.01.2007, 08:43:21
Tja, der Aufbau : Delimiter.Suchpattern.Delimiter.Modifer ...
Also:
preg_match('#[\w-]+(?:\.[\w-]+)*@(?:[\w-]+\.)+[a-zA-Z]{2,7}#i');