如何检查文本文件中是否存在日期和字符串

how to check if date and string exist in text file

我有一个 php 功能来记录用户:

if(isset($_POST['enter'])){
if($_POST['name'] != "" && trim($_POST['name'])!= "" ){
$_SESSION['name'] = stripslashes(htmlspecialchars($_POST['name']));
        
$text_message = "<div class='msgln'><span class='chat-time'>".date("F j, g:i A")."</span> <b class='user-name'>".$_SESSION['name']."</b> </div>";
file_put_contents("users.html", $text_message, FILE_APPEND | LOCK_EX);

它工作正常,只是如果有人刷新页面,“file_put_contents”功能将再次登录。

所以我尽量避免重复:

$chck = file_get_contents("users.html");
if (false === strpos($chck, date("F j, g").' '.$_SESSION['name']){
  //file_put_contents
}

我想检查日期 - 只有日期和小时(不是分钟)和用户名。由于我使用的是 12 小时制,我该如何检查下午和上午?

输出:

January 18, 7:33 AM username
January 18, 7:41 AM username

January 18, 7:45 AM username

为简化起见:我想检查“1 月 18 日”、“7”、“上午”、“用户名”。

我认为很难做到这一点,因为你的日期是字符串(没有存储在数据库中),简而言之,如果它已经插入,你就无法获得要比较的日期字符串,因为如果你有例如 users.html:

中的这些输入
<div class='msgln'><span class='chat-time'>January 18, 7:00 AM</span> <b class='user-name'>evara</b> </div>
<div class='msgln'><span class='chat-time'>January 18, 7:31 AM</span> <b class='user-name'>Know-nothing</b> </div>

然后你收到一个插入新用户的请求,所以你需要检查用户是否已经被插入

username = "evara" && date = January 18, 7:01 AM

所以你不能比较它们。但是为什么不比较是否已经插入了用户名?

if (false === strpos($chck,$_SESSION['name']){
  //file_put_contents
}

序列date("F j, g").' '.$_SESSION['name']不能存在,因为日期和用户名之间有一些字符。

您可以使用简单的正则表达式进行检查,例如 "January 18, 9:[0-9]{2} AM"

$date = date('F j, g:[0-9]{2} A');
$match = preg_match('~' . $date . '~', $text_message);

if (strpos($text_message, $_SESSION['name']) === false && !$match) {
    echo "match not found";
    // file_put_contents()
}
else {
    echo "match found";
}