Php 从文件读取匹配字符串的一部分

Php 从文件读取匹配字符串的一部分,php,preg-match,fwrite,fread,Php,Preg Match,Fwrite,Fread,我要求用户输入姓名和电子邮件地址。提交表单时,会读取一个文件,我会将其与用户名和电子邮件进行比较,看看它们是否匹配字符串的一部分 $fname=$_POST['fname']; //validate name field function namecheck ($fname) { $regexp ="/^[A-Za-z]+$/"; if (! preg_match($regexp, $fname)) { return false; } return t

我要求用户输入姓名和电子邮件地址。提交表单时,会读取一个文件,我会将其与用户名和电子邮件进行比较,看看它们是否匹配字符串的一部分

$fname=$_POST['fname'];
//validate name field
function namecheck ($fname) 
{
    $regexp ="/^[A-Za-z]+$/";
 if (! preg_match($regexp, $fname)) 
 {
         return false;
 }
    return true;
}

$message = "name is :" . $fname. "\n";
if (isset($_POST['submit'])) {
if (!namecheck ($fname))
{
    echo'<script type="text/javascript">alert("Enter your name.")</script>';
    return false;
}
else
    {

  if ( ! file_exists("users.txt"))
         {
         echo'<script type="text/javascript">alert("file does not exist")</script>';
         }
    else
     {
        $userStr = readfile("users.txt");
     if (preg_match($userStr, $fname))
         {

        $fp = fopen ("users.txt", "a");
        fwrite($fp, $message);
        fclose($fp);
         }
    }

}

我的问题是:这会检查$fname是否是users.txt文件的一部分吗?

只需更改这一行:

if (preg_match($userStr, $fname))
通过这个:

if (preg_match("/$fname/", $userStr))

您检查名称的正则表达式非常严格,像O'Connors或Jean François这样的名称不会通过。

如果我理解正确,您需要做的是。获取$\u POST名称,打开user.txt文件,在文件中循环检查每个名称,如果找到匹配的名称,则执行其他操作。执行其他操作。您的脚本很混乱。如果preg_匹配$userStr,$fname,则此部分需要工作。你需要有图案。您可以尝试使用ifpreg_grep'/$fname/',fileusers.txt来代替它。请格式化你的代码。