Модераторы: Aliance, skyboy, MoLeX, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Распарсить строку 
V
    Опции темы
studentigor
Дата 8.7.2010, 10:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 397
Регистрация: 14.11.2008

Репутация: нет
Всего: нет



Добрый день!!!
Есть строка. к примеру "1.50 бензин".
Как мне её разбить так чтобы : $ob = 1.50 ; $top = бензин.
Помогите пожалуйста, ато с регуляркой у меня туго - а это будет самый простой и верный способ
PM MAIL   Вверх
g27
Дата 8.7.2010, 10:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 216
Регистрация: 29.9.2007
Где: Vilnius

Репутация: нет
Всего: нет



$pizza  = "piece1 piece2 piece3 piece4 piece5 piece6";
$pieces = explode(" ", $pizza);
echo $pieces[0]; // piece1
echo $pieces[1]; // piece2
PM MAIL Skype   Вверх
patap
Дата 8.7.2010, 10:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 893
Регистрация: 7.5.2005
Где: Украина, Зп

Репутация: 5
Всего: 40



Код

$str = '1.50 бензин';
preg_match('#^(\d+\.\d+)\s([\w\s]+)$#', $str, $match);
echo '<pre>';
print_r($match);
echo '</pre>';



--------------------
На боку кобура болталась, сзади шашка отцовская звякала. 
Впереди меня все хохотало, а позади все плакало (с)
PM MAIL ICQ   Вверх
studentigor
Дата 8.7.2010, 11:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 397
Регистрация: 14.11.2008

Репутация: нет
Всего: нет



g27 - Ваш метод не прокатит потому что может быть так
Цитата

1.50 бензин

а может быть так - "бензин 1500"  Мне это в базу писать - не пойдет,
А Ваш patap - 
Цитата

preg_match('#^(\d+\.\d+)\s([\w\s]+)$#', $str, $match);

Чето не работает
PM MAIL   Вверх
patap
Дата 8.7.2010, 11:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 893
Регистрация: 7.5.2005
Где: Украина, Зп

Репутация: 5
Всего: 40



studentigor, покажи реальный(полный) текст в котором ты делаешь поиск

Это сообщение отредактировал(а) patap - 8.7.2010, 11:19


--------------------
На боку кобура болталась, сзади шашка отцовская звякала. 
Впереди меня все хохотало, а позади все плакало (с)
PM MAIL ICQ   Вверх
studentigor
Дата 8.7.2010, 12:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 397
Регистрация: 14.11.2008

Репутация: нет
Всего: нет



Я делаю поиск в строчке которую я привел, только она всегда разная: то  "бензин 1500" то "1.50 бензин"
Я сделал
Код

preg_match_all('/([А-Яа-я ])/',$st,$okk);// для букв
preg_match_all('/([0-9.])/',$str,$ok);//для цифр лобого формата (15000 или 1.5)

Всем спасибо.

Это сообщение отредактировал(а) studentigor - 8.7.2010, 12:37
PM MAIL   Вверх
patap
Дата 8.7.2010, 12:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 893
Регистрация: 7.5.2005
Где: Украина, Зп

Репутация: 5
Всего: 40



Цитата(studentigor @  8.7.2010,  12:37 Найти цитируемый пост)
Я сделал

думаю то, что ты сделал - работает далеко не так как ты хочешь.

это для любой одиночной буквы русс. алфавита и пробела
Код

[А-Яа-я ]


это для любой точки и для любой одиночной цифры
Код

[0-9.]


еще раз:

это -  "бензин 1500", "1.50 бензин" - и есть входные строки?! они в таком виде и поступают на обработку?!

или же приходит строка следующего вида
" asdgasdg бениз 1500 фылдваолфды фывлдпофылдвп фвылдпофывлдп" или
" asdgasdg 1.50 бениз  фылдваолфды фывлдпофылдвп фвылдпофывлдп"

Это сообщение отредактировал(а) patap - 8.7.2010, 12:58


--------------------
На боку кобура болталась, сзади шашка отцовская звякала. 
Впереди меня все хохотало, а позади все плакало (с)
PM MAIL ICQ   Вверх
studentigor
Дата 9.7.2010, 10:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 397
Регистрация: 14.11.2008

Репутация: нет
Всего: нет



patap  - ты чуть неправиль меня понял
Цитата

" asdgasdg бениз 1500 фылдваолфды фывлдпофылдвп фвылдпофывлдп" 

вот такого не будет.
Может быть только 2 ситуации  "бензин 1500" или "1.50 бензин" - ну вобщем то слово вначале, то число вначале а слово за ним.
я вытягиваю не из большого тексти, а уже из обработаного, 
цифра по длинне может быть разная(1, 1.5, 1.50, 1.500, 1500) - и мое выражение - вытягивает его в массив, и я просто потом получаю отдельно число и слово.
И опять же 
Цитата

ато с регуляркой у меня туго

 и написать чтото жесткое я сам не смогу, а лазить искать времени нету.
Если кто напишет рабочий парсинг для моей ситуации  -  буду очень признателен.
PM MAIL   Вверх
patap
Дата 9.7.2010, 11:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 893
Регистрация: 7.5.2005
Где: Украина, Зп

Репутация: 5
Всего: 40



хз - оно или нет...
Код

  $data = array('бензин 13.55', '12323 бензин фыупфывп', 'не 4343 подходит', 'строка подходит 333.22', 'не подхот22 343.44', '1 газолин скм');
  $expr = '#(?:^(\d{1,}(?:\.\d{1,})?)\s([а-я ]+)$)|(?:^([а-я ]+)\s(\d{1,}(?:\.\d{1,})?)$)#i';
  
  foreach ($data as $value) {
    preg_match($expr, $value, $match);
    $count = count($match);
    
    if ($count > 0) {
      switch ($count) {
        case 3:
          echo $match[1] . ' - ' . $match[2] . '<br />';
          break;
        case 5:
          echo $match[4] . ' - ' . $match[3] . '<br />';
          break;
      }
    }
  }



Цитата
ну вобщем то слово вначале, то число вначале а слово за ним


может тогда действитльно по пробелу делать explode() ?

Это сообщение отредактировал(а) patap - 9.7.2010, 11:14


--------------------
На боку кобура болталась, сзади шашка отцовская звякала. 
Впереди меня все хохотало, а позади все плакало (с)
PM MAIL ICQ   Вверх
studentigor
Дата 9.7.2010, 16:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 397
Регистрация: 14.11.2008

Репутация: нет
Всего: нет



Я над этим думал, но это же сайт с обьявами. Кто-то напишет так 1.5 бензин, а найдется такой что напишет 1. 5 бензин.
Так что explode не прокатит. Хотя и  таких 1. 5 бензин еденицы. 

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Тексты | Следующая тема »


 




[ Время генерации скрипта: 0.0500 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.