如何检查文本文件中是否存在日期和字符串
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";
}
我有一个 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";
}