我有一个像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 =所需用户名" bt我只想要"所需的用户名" ..这个问题留下了nw
现在我无法从中获取用户名和密码。 如何获取用户名和密码,以便我可以在db ...中进行比较...
答案 0 :(得分: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
答案 1 :(得分:0)
$File = file_get_contents("Settings.txt");
$FileArr = explode("\r\n",$File);
echo $FileArr[5]; // This will output: SET username=username
说明:
此代码将分解由\r\n
表示的新换行符指定的文件内容,这是新行的窗口格式。等效的HTML格式:<br>
查看完整数组:
print_r($FileArr);
答案 2 :(得分: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);
答案 3 :(得分: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版本&lt; 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凭据(我认为这就是这个),这样做可能不是一个好主意。