在第一个':'之后获取文本

时间:2017-02-07 16:33:25

标签: php

在txt文件中,有以下内容:

Field1:Field2:Field3:Field4
Data1:Data2:Data3:Data4

如何获取“Field1”之后的文本“Field2”并且没有使用PHP获取“Field3”之前的“:”?

注意:“字段”不是常量字符串。

编辑:我想做一些事情,比如搜索“Field2”,只在它的行上执行。所以我也不想为“数据”这样做! 感谢。

1 个答案:

答案 0 :(得分:0)

编辑: 我想问这个问题的主要目标是:

IGNORE如果你想回答,答案如下:

我正在为我的项目开发一个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
?>