读取文件并获取特定内容并回显它们(php)

时间:2012-08-23 21:17:09

标签: php file-io

我有一个文件(passwords_admin.txt),其中包含以下信息:

# This file is for storing administrative
# .passwords_user in the same directory.
#
# NOTE (Important):
# format: <server type> <keyword>[,<keyword>...] <server name> <login name> <password>      
[<location> [<host> <port>] ]
# The first entry for a given server will be the default user.
# Current keywords:
# livepw - The password change script will change the sa password on this server to the 
new live password
# devpw - The password change script will change the sa password on this server to the 
new dev password
## mysql servers
##
# Do not remove the next line
# ----------- MySQL Instances start here ----------
mysql 1515,dev,devpw,online,ldap_pwd dev-exodus-01 dba_admin B66AF9 166.77.177.241 3306
mysql 1515,dev,devpw,online,ldap_pwd dev-exodus-01 dba_query 83939E 166.77.177.241 3306
mysql 1515,dev,devpw,online,ldap_pwd qa-exodus-01 dba_admin B66AF9 166.77.189.125 3306
mysql 1515,dev,devpw,online,ldap_pwd qa-exodus-01 dba_query 583939E 166.77.189.125 3306
...
...

数据存储在此格式中:format: <server type> <keyword>[,<keyword>...] <server name> <login name> <password> [<location> [<host> <port>] ]

现在,我想复制并打印特定实例的主机名和关键字(devpw或livepw)。

例如,例如dev-exodus-01。我想打印它的主机名166.77.177.241和它的关键字devpw。或者我有什么方法可以将这些值存储在变量中,以后可以使用它们吗?

我试过这个,但显然它没有用。

$file = fopen("passwords_admin.txt", "r");
if (!$file) {
    echo "<p>Unable to open remote file.\n";
    exit;
}
while (!feof($file)) {
    $line = fgets($file, 1024);

    if (preg_match("@devpw(.*)@i", $line, $out)) {
        $title = $out[1];
        echo $title;
        echo "<br/>";
    }
}

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

这应该指向正确的方向:

if (preg_match("@devpw(.*)@i", $line)) {
    $data = explode (" ", $line);
    $keywords = $data[1];
    $hostname = $data[5];
}

根据您的格式将线条拆分为数组。 $hostname设置为第六个条目,$keywords设置为第二个条目。

您需要使用$keywords做类似的事情来获取各个关键字,并且您需要找到一种方法,只需从您想要的配置文件中找到一行,或者存储多行数据 - 一组关联数组可能有用。