0

我有一个像 settings.txt 这样的文件。其中包含一些行

SET VERSION=3
SET BACKUP_DRIVE=D:\
SET BACKUP_DIRECTORY=BACKUP\
SET HOURLY_DIRECTORY=HOURLY\
SET INPUT_DIRECTORY=C:\MySQL\Data\CDR\
SET username=username
SET password=password

此文件位于其他位置或其他服务器上。我已经使用 ...

$frserver =  file_get_contents("http://ip is here/cdr/settings.txt");

我用这个

$File = file_get_contents("http://ip is heresettings.txt");
$FileArr = explode("\r\n",$File);
echo $FileArr[5]; // This will output: SET username=desired username

并得到“SET username=desired username” bt 我只想要“desired username”..just this issue left nw

现在我无法从中获取用户名和密码。如何获取用户名和密码,以便我可以在数据库中比较它们...

4

4 回答 4

2

假设

$frserver = 'SET VERSION=3
SET BACKUP_DRIVE=D:\
SET BACKUP_DIRECTORY=BACKUP\
SET HOURLY_DIRECTORY=HOURLY\
SET INPUT_DIRECTORY=C:\MySQL\Data\CDR\
SET username=username
SET password=password';

整个解决方案就是这两行:

preg_match_all('~^SET\s+([^=]+)=(.*)$~m', $frserver, $matches);
$params = array_combine($matches[1], $matches[2]);

因此,之后您可以相应地检索$params['username']变量$params['password']

ideone 上的实时示例:http: //ideone.com/pn2Wbp

于 2013-04-08T21:36:31.450 回答
0
$File = file_get_contents("Settings.txt");
$FileArr = explode("\r\n",$File);
echo $FileArr[5]; // This will output: SET username=username

解释:

此代码将分解由换行符指定的文件的内容,由换行符表示,\r\n这是换行符的 windows 格式。HTML 等效:<br>

要查看完整的数组:

print_r($FileArr);
于 2013-04-08T21:38:08.087 回答
0

如果您只需要从文本文件中获取数据,我建议使用 csv,如下所示:

key,value
VERSION,3
BACKUP_DRIVE,D:\
BACKUP_DIRECTORY,BACKUP\
HOURLY_DIRECTORY,HOURLY\
INPUT_DIRECTORY,C:\MySQL\Data\CDR\
username,username
password,password

然后您可以执行以下操作将所有这些键和值放入 PHP 数组中:

$contents = file_get_contents('http://ip is here/cdr/settings.txt');
$lines = explode("\n",$contents);
foreach($lines as $line) {
   $pair = str_getcsv($line);
   $settings[] = array($pair[0]=>$pair[1]);
}
// print_r to see the array
print_r($settings);
于 2013-04-08T21:45:13.050 回答
0

您可能最好使用file()它来获取数据,这样返回的数据已经在一个数组中(每行文本一个元素):

$raw_array = file('http://ip is here/cdr/settings.txt');

然后也许运行数组遍历将所有内容设置为可用数组

$final_array = array();
array_walk($raw_array, function($value) use $final_array {
    $value = trim($value); // trim newlines
    $value = str_replace('SET ', '', $value); // remove 'SET '
    $value_array = explode('=', $value); // break up value on '='
    $final_array[$value_array[0]] = $value_array[1]; // set key/value in $final_array
});

对于不支持匿名函数的 PHP 版本 < 5.3,您需要在此处使用命名函数,因此它可能如下所示:

$final_array = array();
array_walk($raw_array, 'parse_raw_array', $final_array);

function parse_raw_array ($value, $key_not_used, $final_array) {
    $value = trim($value); // trim newlines
    $value = str_replace('SET ', '', $value); // remove 'SET '
    $value_array = explode('=', $value); // break up value on '='
    $final_array[$value_array[0]] = $value_array[1]; // set key/value in $final_array
});

然后只需根据需要从 $final_array 访问键/值

$username = $final_array['username'];
$password = $final_array['password'];

话虽这么说,像这样清楚地传递您的 MySQL 凭据(我假设就是这样)可能不是一个好主意。

于 2013-04-08T21:47:18.573 回答