|
|
|
| Добрый день, нужно что бы скрипт разбирал такие блоки текста и вставлял в базу данных.
Дата: 2010.01.01
Получатель: Склад1
Фирма: Фирма1
Отправители:
Отправитель: Склад2
Фирма: Фирма2
Отправитель: Склад3
Фирма: Склад3
Товар:
Морковь: 150 ед.
Баклажаны: 20ед.
|
Пробую делать через explode,
<?
$arr = "Дата: 2010.01.01
Получатель: Склад1
Фирма: Фирма1
Отправители:
Отправитель: Склад2
Фирма: Фирма2
Отправитель: Склад3
Фирма: Склад3
Товар:
Морковь: 150 ед.
Баклажаны: 20ед.";
$part = explode("\n", $arr);
echo $part[0];
?>
|
Получаю строку "Дата: 2010.01.01", отделяем цифры опять через explode, и убираем проблемы функцией trim.
Но это еще куда ни шло при условии что мы обрабатываем дату, или получателя, который тоже один, а вот отправителей может быть много, как и товара, как обработать такой текст, и занести информацию в базу данных?
Из идей, весь текст разбить опять через explode по слову "отправители", получим блок с получателем, и блок с отправителями и товаром, опять разбиваем по слову товар, забираем первый блок с отправителями, и там его через циклы обрабатываем, но это получается огромное кол-во вызовов explode, есть идеи как сделать другим способом? | |
|
|
|
|
|
|
|
для: Nerfair
(28.11.2010 в 22:42)
| | регулярные выражения, preg_match | |
|
|
|
|
|
|
|
для: Nerfair
(28.11.2010 в 22:42)
| | Вы сперва поясните, откуда этот текст, что является автором его? | |
|
|
|
|
|
|
|
для: Nerfair
(28.11.2010 в 22:42)
| | А может проще сделать нормальную форму для отправки сообщения? Или нормальный экспорт данных (если данные берутся не из формы)? Здесь периодически всплывают вопросы, как обработать неудобные данные. Но может поставить задачу наоборот: как сделать данные удобными? | |
|
|
|
|
|
|
|
для: kosta_in_net
(30.11.2010 в 18:23)
| | А дело в том что эту форму не я придумал, такой текст просто присылают по почте и его нужно забить в базу данных :) | |
|
|
|
|
|
|
|
для: nerfair
(02.12.2010 в 10:37)
| | Может сначала массив строк:
$part = explode("\n", $arr);
а потом строка по двоеточию, чтоб получить многомерный массив...
$tempar=array();
foreach($part AS $value){
$tempar=explode(":", $value);
switch(strtolower(trim($tempar[0]))){
case 'производитель':
adDataBaza(proizvoditel=trim($tempar[1]));
break;
case 'фирма':
adDataBaza(firma=trim($tempar[1]));
break;
case 'отправитель':
adDataBaza(otpravitel=trim($tempar[1]));
break;
...
}
}
|
Где adDataBaza - некая функция добавления данных в базу | |
|
|
|