在txt文件中,有以下内容:
Field1:Field2:Field3:Field4
Data1:Data2:Data3:Data4
如何获取“Field1”之后的文本“Field2”并且没有使用PHP获取“Field3”之前的“:”?
注意:“字段”不是常量字符串。
编辑:我想做一些事情,比如搜索“Field2”,只在它的行上执行。所以我也不想为“数据”这样做! 感谢。
答案 0 :(得分:0)
编辑: 我想问这个问题的主要目标是:
我正在为我的项目开发一个AdminCP,如果管理员在AdminCP中的HTML表单中键入“ User1 ”,则必须返回“此用户已被暂停!“如果txt文件中的行是” User1:suspended:24/01/2012 “。
虽然txt文件中的用户格式为:
USERNAME:STATUS:REGISTRATION DATE
User1:suspended:24/01/2012
(所有的文字和字符串只是例子)。
因此,在下面的答案中...... $searchfor = 'Field2';
必须是$searchfor = $_POST['username'];
。
我想用:
if( $data[1]=="suspended" ) {
echo "The user which owns ".$data[0]." is suspended!";
}
$ data [0]是用户名(User1),$ data [1]是状态(暂停)。
感谢@MagnusEriksson和PHP to search within txt file and echo the whole line。我自己刚刚发现了解决方案:
<?php
$file = 'test.txt';
$searchfor = 'Field2';
// the following line prevents the browser from parsing this as HTML.
header('Content-Type: text/plain');
// get the file contents, assuming the file to be readable (and exist)
$contents = file_get_contents($file);
// escape special characters in the query
$pattern = preg_quote($searchfor, '/');
// finalise the regular expression, matching the whole line
$pattern = "/^.*$pattern.*\$/m";
// search, and store all matching occurences in $matches
preg_match_all($pattern, $contents, $matches);
$wholeLine = implode("\n", $matches[0]);
$data = explode(":", $wholeLine);
echo $data[0]; // Field1
echo $data[1]; // Field2
?>