【发布时间】:2014-05-23 21:42:17
【问题描述】:
我正在寻找一个在 PHP 中使用的正则表达式来匹配一个字符; @ 符号。
例如,如果我在输入中键入:P@ssword,则正则表达式将匹配。如果我在输入中输入P@@ssword,正则表达式将不匹配。
这是我正在使用的 PHP 代码:
<?php
session_start();
if($_SERVER['REQUEST_METHOD'] == "POST") {
$conn=mssql_connect('d','dd','d');
mssql_select_db('d',$conn);
if(! $conn )
{
die('Could not connect: ' . mssql_get_last_message());
}
$username = ($_POST['username']);
$password = ($_POST['password']);
if (preg_match("[\W]",$_POST["password"]))
{
if (!preg_match("^[^@]*@[^@]*$",$_POST["password"]))
{
header("location:logingbm.php");
} else {
}
}
if(!filter_var($_POST['username'], FILTER_VALIDATE_EMAIL))
{
if ($_POST["username"])
{
if ($_POST["password"])
{
$result = mssql_query("SELECT * FROM staffportal WHERE email='".$username."' AND
password='".$password."'");
if(mssql_num_rows($result) > 0) {
$_SESSION['staff_logged_in'] = 1;
$_SESSION['username'] = $username;
}}}} else {
if ($_POST["password"])
{
$result = mssql_query("SELECT * FROM staffportal WHERE email='".$username."' AND
password='".$password."'");
if(mssql_num_rows($result) > 0) {
$_SESSION['staff_logged_in'] = 1;
$_SESSION['username'] = $username;
}}}}
if(!isset($_SESSION['staff_logged_in'])) {
header("location:logingbm.php");
echo "<script>alert('Incorrect log-in information!');</script>";
} else {
header("location:staffportal.php");
}
?>
【问题讨论】:
-
这个问题似乎离题了,因为它缺乏足够的信息来诊断问题,例如尝试并告诉我们您遇到的问题,而不是简单地向社区提供要求列表。
-
老实说,我会放弃正则表达式,而只是迭代字符串中的字符。如果您再次点击
@,那么您会因错误而退出。在这种情况下,正则表达式正在使用大锤杀死苍蝇。 -
我该怎么做@cdhowie?
-
没有理由拒绝这个问题,因为 OP 提出了一个明确的问题,并且已经生成了代码。
-
模式需要分隔符,例如斜杠:
preg_match("/^[^@]*@[^@]*$/" ...。