Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Парсинг dhcp.conf

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: не могу разобрать текст и засунуть в массив
Puschistic
Отправлено: 22 Сентября, 2009 - 15:04:09
Post Id


Новичок


Покинул форум
Сообщений всего: 20
Дата рег-ции: Сент. 2009  


Помог: 0 раз(а)




люди добрые помогите сделать скрипт который будет разбирать файлик на массив данных.
файлик такого типа.... спасибо... Огорчение
#####
# Voroshilova-10a-91
# Gusel.nikov-Mixail-JUr.evich
# Dog. 2013
# vg_id 2581
# modemid 566
# Comments:
host S-Voroshilova_B-10a_Kv-91_P-6-3_ D-2013 {
hardware ethernet 00:1B:FCГолливудская улыбка5:02:27;
fixed-address 10.1.35.56;
}

#####
# Ostrovskogo-20-2
# Kondrat.eva-O.N.
# Dog. 013
# vg_id 418
# modemid 265
# Comments:
host Ostrovskogo20kv2 {
hardware ethernet 00:0F:EA:B2:22:AF;
fixed-address 10.2.30.61;
}
 
 Top
Ch_chov
Отправлено: 22 Сентября, 2009 - 16:19:26
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008  
Откуда: из города


Помог: 90 раз(а)




Напиши структуру массива. Каким он должен быть.
 
 Top
Puschistic
Отправлено: 23 Сентября, 2009 - 07:43:49
Post Id


Новичок


Покинул форум
Сообщений всего: 20
Дата рег-ции: Сент. 2009  


Помог: 0 раз(а)




Voroshilova-10a-91|Gusel.nikov-Mixail-JUr.evich|2013|2581|566|host S-Voroshilova_B-10a_Kv-91_P-6-3_ D-2013 {hardware ethernet 00:1B:FCГолливудская улыбка5:02:27; fixed-address 10.1.35.56;} вот так.... там не обязательно в массив можно в бд засунуть у меня проблема как раз с тем что не получается разобрать блок текста на части что бы можно было дальше с этим оперировать.... пробовал регулярками чет нихрена ниче не получилось......
'#host ([^ ]+) *\{#Usi'
'#hardware +ethernet +([0-9a-f]{2})\Недовольство, огорчение[0-9a-f]{2})\Недовольство, огорчение[0-9a-f]{2})\Недовольство, огорчение[0-9a-f]{2})\Недовольство, огорчение[0-9a-f]{2})\Недовольство, огорчение[0-9a-f]{2});#Usi'
#fixed-address +(\d+)\.(\d+)\.(\d+)\.(\d+);#Usi'
 
 Top
Ch_chov
Отправлено: 23 Сентября, 2009 - 09:46:17
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008  
Откуда: из города


Помог: 90 раз(а)




PHP:
скопировать код в буфер обмена
  1. // Прочитать данные из файла в массив
  2. $data = file('data.txt');
  3.  
  4. // Убрать все лишнее
  5. $data = str_replace(array('#', '{', '}', 'Comments:', '  ', ';'), '', $data);
  6. foreach($data as $key => $val)
  7.   if(!$data[$key] = trim($val)) unset($data[$key]);


P.S. Отключай смайлы в постах.

(Отредактировано автором: 23 Сентября, 2009 - 10:20:34)

 
 Top
Puschistic
Отправлено: 23 Сентября, 2009 - 10:15:13
Post Id


Новичок


Покинул форум
Сообщений всего: 20
Дата рег-ции: Сент. 2009  


Помог: 0 раз(а)




балин спасиба!!!! не подскажешь как убрать ошибку (Undefined offset)
 
 Top
Ch_chov
Отправлено: 23 Сентября, 2009 - 10:21:45
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008  
Откуда: из города


Помог: 90 раз(а)




В какой строке ошибка?
 
 Top
Ch_chov
Отправлено: 23 Сентября, 2009 - 14:42:42
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008  
Откуда: из города


Помог: 90 раз(а)




Или ты имеешь ввиду ошибку при добавлении поста?
(Добавление)
Каждый кусок данных должен находится в отдельном файле.
 
 Top
Puschistic
Отправлено: 24 Сентября, 2009 - 07:54:54
Post Id


Новичок


Покинул форум
Сообщений всего: 20
Дата рег-ции: Сент. 2009  


Помог: 0 раз(а)




да не.. я проста массив вывел там эта ошибка она повторяется в каждом блоке...
(Добавление)
слушай смотри а не получится ли вот так сделать: сначала разбить на блоки а потом сами блоки на переменные и дальше уже вертеть как хочешь..... вот только до меня не допрет как сделать что бы след. блок брался.... опыта то у мене всего 1.5 месяца поэтому туплю))))
$date = "#####
# Budennogo-10a
# OOOLada-Ljuks
# Dog. 080JU
# vg_id 78
# modemid 85
# Comments:
host Karbysheva16Fontan {
hardware ethernet 00:0B:6A:F4:C5:C7;
fixed-address 10.2.31.14;
}


#####
# Budennogo-2-45
# Grencner-ZHanna-Nikolaevna
# Dog. 1596
# vg_id 2135
# modemid 684
# Comments:
host S-Budennogo_B-2_Kv-45_P-4-1_D-15 96 {
hardware ethernet 00:19:5B:EA:27:5F;
fixed-address 10.1.37.83;
}
";
list($block) = explode("

", $date1);
echo "$block<br><br><br>\n";
(Добавление)
ААААА!!!!! кажись допёрло.....
$date = "#####
# Budennogo-10a
# OOOLada-Ljuks
# Dog. 080JU
# vg_id 78
# modemid 85
# Comments:
host Karbysheva16Fontan {
hardware ethernet 00:0B:6A:F4:C5:C7;
fixed-address 10.2.31.14;
}


#####
# Budennogo-2-45
# Grencner-ZHanna-Nikolaevna
# Dog. 1596
# vg_id 2135
# modemid 684
# Comments:
host S-Budennogo_B-2_Kv-45_P-4-1_D-15 96 {
hardware ethernet 00:19:5B:EA:27:5F;
fixed-address 10.1.37.83;
}
";
list($block,$block2) = explode("

", $date);
echo "$block<br><br><br>\n$block2";
(Добавление)
)))) не не так))))))
 
 Top
Ch_chov
Отправлено: 24 Сентября, 2009 - 08:40:27
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008  
Откуда: из города


Помог: 90 раз(а)




Можно и так. Если размер файла не большой можно прочитать его весь в строку с помощью file_get_contents и разбить на массив explode.

Или если файл большой, то читать его построчно (или по байтно).
 
 Top
Puschistic
Отправлено: 24 Сентября, 2009 - 08:58:25
Post Id


Новичок


Покинул форум
Сообщений всего: 20
Дата рег-ции: Сент. 2009  


Помог: 0 раз(а)




примерно 14000 строк или 1000 таких подобных блоков...
(Добавление)
так получается...
$blok = explode("

", $date);
echo $blok[0];
echo $blok[1];
верно?
 
 Top
Ch_chov
Отправлено: 24 Сентября, 2009 - 09:45:23
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008  
Откуда: из города


Помог: 90 раз(а)




Ну если получается, значит верно. Перенос строки – "\n".
 
 Top
Puschistic
Отправлено: 24 Сентября, 2009 - 10:05:08
Post Id


Новичок


Покинул форум
Сообщений всего: 20
Дата рег-ции: Сент. 2009  


Помог: 0 раз(а)




а как мне лучше разобрать строку массива на переменные? стоит заморачиваться с регулярками может есть способ попроще?
 
 Top
Puschistic
Отправлено: 24 Сентября, 2009 - 12:17:56
Post Id


Новичок


Покинул форум
Сообщений всего: 20
Дата рег-ции: Сент. 2009  


Помог: 0 раз(а)




вообщем в принципе все получилось вот только выглядит это немногостранно
fixed-address 10.2.31.14;
10
2
31
14
fixed-address 10.1.37.83;
10
1
37
83
скрипт вот какой
$blok = explode("

", $date);
foreach($blok as $key => $value)
{
preg_match_all('#fixed-address +(\d+)\.(\d+)\.(\d+)\.(\d+);#Usi', $value, $blok_razobran);
foreach ($blok_razobran as $val)
{
echo $val[0]."<br>";
}
}
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB