2013-04-08 2 views
0

У меня есть файл, например settings.txt. , который содержит несколько строк, какКак получить строку среди строк, используя php

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 имя пользователя = желаемое имя» Bt я хочу только «желаемое имя» .. только этот выпуск покинул ЯО

Теперь я не могу получить от него имя пользователя и пароль. как получить имя пользователя и пароль, так что я могу сравнить их в БД ...

+1

Какая реализация вы пытались получить из этого файла имя пользователя и пароль? Можете ли вы показать свой код и объяснить, где у вас проблемы? –

+0

Я пытался взорвать функцию $ datasource_array = explode ("\ n", $ frserver); но не знал, как добраться до получения имени пользователя и пароля –

ответ

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'; 

весь раствор именно эти 2 строки:

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

Так после этого вы можете получить ваши переменные как $params['username'] и $params['password'] соответственно.

Живой пример на ideone: http://ideone.com/pn2Wbp

+0

Op заявила, что хочет читать содержимое текстового файла, а не помещать содержимое в виде строки –

+0

@Daryl Gill: '$ frserver = file_get_contents (" http: // ip здесь/cdr/settings.txt ");'? Я даже не упоминаю, что вы читаете его таким же образом: '$ File = file_get_contents (« Settings.txt »);' – zerkms

+0

Я подпрыгнул пистолет перед вашим обновлением, пожалуйста, не обращайте внимания на мой комментарий –

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); 
+0

Спасибо за вашу помощь, но дорогой я хочу получить только имя пользователя, а не «set username =» juts, что всегда является именем пользователя и паролем. –

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); 
+0

yes..this было сделано dear..bt я хочу только часть имя пользователя и пароль только ничего ничего –

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 (я предполагаю, что это то, что это) в понятном виде, вероятно, это не очень хорошая идея.

+0

я пытался эхо $ username, но он ничего не показывает ... что shoud быть ошибкой? –

+0

Какую версию PHP вы используете? Вы получаете какие-либо ошибки? –

+0

нет, я не получаю ошибку .. я просто получаю пустой экран –

Смежные вопросы