2013-09-23 3 views
1

Я пытаюсь прочитать определенное значение из текстового файла. Мой текстовый файл выглядит так:Чтение определенного значения из текстового файла

token = 12345 
data = new 
... 

Я хочу захватить значение токена. Мой PHP выглядит следующим образом:

$myFile = "../data/input.txt"; 
$lines = file($myFile);//file in to an array 
echo $lines[0]; //line 1 
preg_replace("/[^0-9]/","",$lines[0]); 

Выход

маркер = 12345

, но я хочу, чтобы захватить только . После того, как я заберу номер, я планирую использовать его в пути ... но его предоставление aspace перед number.please проходит через код ниже и дайте мне знать, если у вас есть какие-либо предложения.

$myFile = "../data/input.txt"; 
$lines = file($myFile);//file in to an array 
list($token, $number) = explode('=', $lines[0]); 
$dir = "C:/wamp/.../$number/Profit/Jan2010"; 
if ($handle = opendir($dir)) { 
while (false !== ($file = readdir($handle))) { 
    if ($file != "." && $file != "..") { 
    echo "<a href=".$dir."/".$file.">$file</a><br/>"; 
    } 
} 
closedir($handle); 

Мой путь должен быть .../12345/Прибыль/Jan2010. Используя приведенный выше код, я получаю ..../12345/Прибыль/Jan2010 (пробел до 12345). Могу ли я использовать $ number в пути? Заранее спасибо

+0

Вы эхом перед заменой preg. Попробовали ли вы повторить замену preg или присвоить ее $ lines [0]?'$ lines [0] = preg_replace ("/[^ 0-9]/"," ", $ lines [0]); echo $ lines [0]; ' –

+0

just echo preg_replace return http://stackoverflow.com/a/18966397/2459296 – Salim

+0

Вы также можете изучить [parse_ini_file] (http://php.net/manual/en/ function.parse-ini-file.php), а не регулярное выражение, если ваш формат файла похож по структуре на php.ini – ernie

ответ

2

Похоже, что вы не используете вывод preg_replace должным образом.

Число фактически сохраняется в $lines[0];, но вы просто эхом отдаете его вместо хранения в переменной.

должно работать:

$number = preg_replace("/[^0-9]/","",$lines[0]); 
echo $number; 

В качестве альтернативы, вы можете также использовать explode() (может быть немного более эффективным в некоторых случаях), чтобы разделить вашу строку разделителем:

list($token, $number) = explode('=', $lines[0]); 
echo (int) $number; 

UPDATE

Мой путь должен быть .../12345/Pr ОФИТ/Jan2010. Используя приведенный выше код, я получаю ..../12345/Profit/Jan2010 (пробел до 12345).

Это, вероятно, из-за пробелов в $number. Для того, чтобы удалить это, вы можете использовать trim следующим образом:

$number = trim($number); 

Или, включают в себя пространство в вашем разделителем:

list($token, $number) = explode(' = ', $lines[0]); 

Demo!

+0

Просто для чистоты, я бы рекомендовал отличать номер как 'int'. Он удалит посторонние пробелы и обеспечит правильный тип данных для этого контекста. – SamT

+0

@SamT: Хорошая идея. Обновлено. –

+0

отличный ответ !! это сработало! спасибо – user2791530

0

Он должен показать только 12 345, который вы уже использовали

Просто используйте эхо перед вашей последней линией

echo preg_replace("/[^0-9]/","",$lines[0]); 
Смежные вопросы