(PHP帮助)如果文件中存在特定数字,请执行此操作
Posted
技术标签:
【中文标题】(PHP帮助)如果文件中存在特定数字,请执行此操作【英文标题】:(PHP help) If specific number exists in file, do this 【发布时间】:2012-05-27 01:41:21 【问题描述】:这是一个与 php 相关的问题。
我已经广泛搜索了以下问题的解决方案,但没有找到适合我的解决方案。如果有人可以帮助我,将不胜感激。
我的想法是创建一个登录页面,如果将“特定”预先确定的注册号提供/发送给用户,则访问登录页面并且该号码存在于文件中,执行/允许登录权限。
例如,如果一个用户的注册号是12345,而另一个是123,想先搜索一下用户的号码是否存在,然后做某事()。
因此,如果“123”已经存在,则搜索“12345”与搜索“234”不同,因此它必须找到一个或多个特定数字。
如果有区别,在数字之前和/或之后应该有一个“空格”。
这将在现有文件中。
代码:
<?php
$filename = 'datafile.txt';
// Data file may contain the following number(s) or any other
// 123 (no)
// 1234 (match)
// 12345 (no)
// 123456 (no)
// exact match needed to proceed to page fopen($filename);
$searchfor = '1234';
// this needs to be a variable
// I don't know what the number will be used.
$file = file_get_contents($filename);
if (preg_match($file, $searchfor))
echo "Match found. Proceed to the page.";
else
echo "Match not found. Try again.";
fclose($filename);
?>
谢谢。任何帮助表示赞赏,干杯。
弗雷德
【问题讨论】:
您的问题对我来说不是很清楚,但听起来正则表达式可能是提供这种验证的最佳方式。 你的问题很不清楚。请改写,以便我们为您提供帮助。 可能在该文件中添加带有分隔符的注册号,例如:|||,然后无论何时要检查用户是否存在,都可以打开文件,并使用explode("|||", $文件);你会得到一个包含这些注册号的数组,然后尝试 in_array() 如果它存在,它将返回 true ... 这是我一直试图开始工作的代码,它可能会自行解释。 问题是,数据存储在 .html 文件中,不会按特定顺序排列。脚本需要在文件中找到确切的出现。 【参考方案1】:将这些存储在平面文件中可能不是我这样做的方式,但如果我要使用平面文件,以下示例应该可以正常工作:
$nums = "12345 34 45 12345 23"; # use file_get_contents to load from file
$uNum = 34;
if ( preg_match( "/[^0-9]$uNum[^0-9]/", $nums ) )
echo "Access";
else
echo "Denied";
至于填充$nums
字符串,您可以使用file_get_contents()
拉入包含所有数字的文件内容。
/ 表示模式的开始 [^0-9] 模式中的空格不能被任何数字占用 $uNum 用户编号 - 上例中为 34 [^0-9] 模式中的空格不能被任何数字占用 / 表示模式结束
基本上,如果我们的号码在它的任一侧都有一个数字而不是一个空格,或者根本没有,我们的号码将不会被找到。
【讨论】:
谢谢 Johathan,我已经完成了填充 $numbers 的工作。现在,我所要做的就是想办法为它构建一个表单(在同一个脚本中),并使用输入的人的代码,以反映 $uNumber @FredFletcher 将$uNum
设置为$_POST['uNum']
,一切就绪。当然,你需要<form method='post'><input type='text' name='uNum' /><input type='submit' /></form>
。
漂亮!谢谢乔纳森,你帮了大忙!非常感谢,加油!我做了一个回声"<form action=\"" . $PHP_SELF . "\" method='post'><input type='text' name='uNum' /><input type='submit' /></form>";
- 是时候让我休息一下了。再次感谢:)
我点击了“向上箭头”,并收到以下错误消息“投票需要 15 声望”。我是这个网站的新手,可能是为什么?
@FredFletcher 啊,是的。随着时间的推移,你会建立更多的声誉。很高兴我们能够解决您的问题。以上是关于(PHP帮助)如果文件中存在特定数字,请执行此操作的主要内容,如果未能解决你的问题,请参考以下文章