Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Разбор текста на строки и слова
 
 автор: Nerfair   (28.11.2010 в 22:42)   письмо автору
 
 

Добрый день, нужно что бы скрипт разбирал такие блоки текста и вставлял в базу данных.

Дата: 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, есть идеи как сделать другим способом?

  Ответить  
 
 автор: psychomc   (29.11.2010 в 00:33)   письмо автору
 
   для: Nerfair   (28.11.2010 в 22:42)
 

регулярные выражения, preg_match

  Ответить  
 
 автор: sim5   (29.11.2010 в 02:26)   письмо автору
 
   для: Nerfair   (28.11.2010 в 22:42)
 

Вы сперва поясните, откуда этот текст, что является автором его?

  Ответить  
 
 автор: kosta_in_net   (30.11.2010 в 18:23)   письмо автору
 
   для: Nerfair   (28.11.2010 в 22:42)
 

А может проще сделать нормальную форму для отправки сообщения? Или нормальный экспорт данных (если данные берутся не из формы)? Здесь периодически всплывают вопросы, как обработать неудобные данные. Но может поставить задачу наоборот: как сделать данные удобными?

  Ответить  
 
 автор: nerfair   (02.12.2010 в 10:37)   письмо автору
 
   для: kosta_in_net   (30.11.2010 в 18:23)
 

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

  Ответить  
 
 автор: kosta_in_net   (03.12.2010 в 20:13)   письмо автору
 
   для: 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 - некая функция добавления данных в базу

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования