Вот мое мнение:
somefile.txt:
NAMEA valuea
NAMEB valueb
Код PHP:
<code>$file = file_get_contents('./somefile.txt');
$string = preg_replace('~^(.+?)\s+(.+?)$~m', '$1=$2', $file);
$string = str_replace(array("\r\n", "\r", "\n"), '&', $string);
$result = array();
parse_str($string, $result);
echo '<pre>';
print_r($result);
echo '
';
Выход:
Array
(
[NAMEA] => valuea
[NAMEB] => valueb
)
Вы также можете еще больше упростить это, используя str_getcsv()
на PHP 5.3 +.
EDIT : Моя предыдущая версия не работает для ключей с пробелами типа @Col. Шрапнель заметил. Я не читал вопрос с достаточным вниманием. Возможное решение, поскольку вы, похоже, используете ключи, к которым всегда добавляется :
, таково:
$string = preg_replace('~^(.+?):\s+(.+?)$~m', '$1=$2', $file);
Чтобы удалить все с key_x
до конца файла, вы можете сделать что-то вроде этого:
$string = substr($string, 0, strpos($string, 'key_x'));
Так что все это будет выглядеть так:
somefile.txt:
Registration Number: valuea
Applicant Name: valueb
PHP код:
<code>$file = file_get_contents('./somefile.txt');
$string = substr($file, 0, strpos($file, 'key_x'));
$string = preg_replace('~^(.+?):\s+(.+?)$~m', '$1=$2', $string);
$string = str_replace(array("\r\n", "\r", "\n"), '&', $string);
$result = array();
parse_str($string, $result);
echo '<pre>';
print_r($result);
echo '
';
Выход:
Array
(
[Registration_Number] => valuea
[Applicant_Name] => valueb
)