2010-03-02 1 views
2

У меня есть текстовое поле, где пользователь копирует и вставляет весь сообщение:Газа вниз Строка в Колоне

Time(UTC): 2010-02-27T21:58:20.74Z 

Filesize : 9549920 bytes 

IP Address: 192.168.1.100 

IP Port: 59807 

Использование PHP, как можно автоматизировать и анализировать это вплоть до 4-х отдельных переменных, например, так:

<?php 
$time = 2010-02-27T21:58:20.74Z; 
$filesize = 9549920; 
$ip = 192.168.1.100; 
$port = 59807; 

Я могу сказать, что каждая строка имеет двоеточие, поэтому я думаю, что это может иметь какое-то отношение к ней. Я не уверен, что мне нужно будет использовать субстрат или что-то еще. Но я не совсем уверен, с чего начать?

Любая помощь будет замечательной! Благодарю.

ответ

3

один способ

$textarea=<<<EOF 
Time(UTC): 2010-02-27T21:58:20.74Z 

Filesize : 9549920 bytes 

IP Address: 192.168.1.100 

IP Port: 59807 
EOF; 

$s = explode("\n\n",$textarea); 
foreach ($s as $k=>$v){ 
    list($a,$b) = array_map(trim,explode(": ",$v)); 
    # or use explode(":",$v,2) as jason suggested. 
    $array[$a]=$b; 
} 
print_r($array); 
+0

В первой строке имеется более одного двоеточия. Я не думаю, что вы получите всю ценность таким образом. – JAL

+0

Да, вы правы, я пропустил это. Thks. – ghostdog74

+1

Вы бы, если бы вы взорвали (':', $ v, 2) 'хотя. – jasonbar

2

Это гарантирует, что каждый из них будет по своей линии и в таком порядке? Тогда вы могли бы explode всю строку на \n, а затем explode каждую строку на :. Это быстрый и грязный подход. Помимо этого вам следует пройти по строкам и посмотреть в начале строки, будет ли текст перед первым двоетоем соответствовать требуемой переменной и, если это так, проанализировать его в соответствии с предопределенными правилами синтаксического анализа (например, сбросить «байты» из значения размера файла).

+0

Хорошо, ghostdog дал вам реальный код, описывающий мое первое решение. – pr1001