Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.02.2010, 21:01   #1
micron
Пользователь
 
Аватар для micron
 
Регистрация: 05.01.2010
Сообщений: 18
По умолчанию preg_match множественная проверка

вопрос такой
$news="бла бла бла...";
preg_match('/[\d]{2,},[\d]{2,}/s', $news, $out);
print_r($out);
задан текст,в нем присутствуют числа дробные типа 39,8762, но их множество, как заставить проверять ее многократно, тоесть вывести на экран все числа удовлитворяющие условию проверки,без цикла
спс за внимание.
micron вне форума Ответить с цитированием
Старый 14.02.2010, 21:05   #2
13th
Форумчанин
 
Аватар для 13th
 
Регистрация: 31.12.2008
Сообщений: 634
По умолчанию

Код:
preg_match('/([0-9]+)*/',$news,$out);
попробуй это
Возможно всё
Пишу обо всем
13th вне форума Ответить с цитированием
Старый 14.02.2010, 21:42   #3
micron
Пользователь
 
Аватар для micron
 
Регистрация: 05.01.2010
Сообщений: 18
По умолчанию

preg_match('/([0-9]+)*/',$news,$out);
проверяет все числа какие тока найдет, это в идеале, данная функция не робит ((, не находит числа
видимо она для 4 версии, может и ошибаюсь, у меня 5
preg_match('/([\d]{2,},[\d]{2,}+)/s',$news,$out); сделал так, но теперь он просто дублирует первое дробное число . причем стока скока найдет дробных чисел ((
micron вне форума Ответить с цитированием
Старый 14.02.2010, 21:51   #4
13th
Форумчанин
 
Аватар для 13th
 
Регистрация: 31.12.2008
Сообщений: 634
По умолчанию

тык, давай ты мне сечас полноценно задачу изложишь и я тады напишу опробованный вариант
Возможно всё
Пишу обо всем
13th вне форума Ответить с цитированием
Старый 14.02.2010, 22:02   #5
micron
Пользователь
 
Аватар для micron
 
Регистрация: 05.01.2010
Сообщений: 18
По умолчанию

$news="курс доллара 30,0087 рубля, евро 43,8877 рубля, фунт стерлинг 47,7854 рубля, свидетельствуют данные Банка России.'";
preg_match('/([\d]{2,},[\d]{2,}+)/', $news, $out);
print_r($out);
нужно вырвать все эти числа и вывести на экран для обработки
данным примером выводит ответ:
Array ( [0] => 30,0087 [1] => 30,0087 ) ,а нужно все числа
твоим же запросом выводит
Array ( [0] =>)
micron вне форума Ответить с цитированием
Старый 14.02.2010, 22:02   #6
micron
Пользователь
 
Аватар для micron
 
Регистрация: 05.01.2010
Сообщений: 18
По умолчанию

$news="курс доллара 30,0087 рубля, евро 43,8877 рубля, фунт стерлинг 47,7854 рубля, свидетельствуют данные Банка России.'";
preg_match('/([\d]{2,},[\d]{2,}+)/', $news, $out);
print_r($out);
нужно вырвать все эти числа и вывести на экран для обработки
данным примером выводит ответ:
Array ( [0] => 30,0087 [1] => 30,0087 ) ,а нужно все числа
твоим же запросом выводит
Array ( [0] =>)
micron вне форума Ответить с цитированием
Старый 14.02.2010, 22:14   #7
13th
Форумчанин
 
Аватар для 13th
 
Регистрация: 31.12.2008
Сообщений: 634
По умолчанию

затупил я, просто замени preg_match на preg_match_all . и такой нюанс ,что использование ([\d]{2,} такой конструкции подразумевает ,что тебе нужно от двух цифр и до бесконечности, а такая конструкция - ([\d]+) что от одной цифры. ведь котировки могут быть и меньше 10 рублей( ну я верю в это ).
в общем в итоге
Код:
preg_match_all('/([\d]+,[\d]+)/', $news, $out);
Возможно всё
Пишу обо всем
13th вне форума Ответить с цитированием
Старый 15.02.2010, 10:20   #8
micron
Пользователь
 
Аватар для micron
 
Регистрация: 05.01.2010
Сообщений: 18
По умолчанию

Код:
Array
(
    [0] => Array
        (
            [0] => 30,0087
            [1] => 43,8877
            [2] => 47,7854
        )

    [1] => Array
        (
            [0] => 30,0087
            [1] => 43,8877
            [2] => 47,7854
        )

)
вот результат этого кода,так я не пойму почему он рисует 2 массива?
в принципе мне не проблема выбрать данные с любого массива, но все же интересно.
p.s.13th спс что помог, сам тоже не сразу понял, preg_match_all надо было юзать), ночь-голова чумная
micron вне форума Ответить с цитированием
Старый 15.02.2010, 10:35   #9
13th
Форумчанин
 
Аватар для 13th
 
Регистрация: 31.12.2008
Сообщений: 634
По умолчанию

ну это правильно, смотри . фишка в том , что в первом массиве выводятся то что как бы захватил паттерн(ну шаблон поиска), а втором результаты поиска. так всегда))
Возможно всё
Пишу обо всем
13th вне форума Ответить с цитированием
Старый 15.02.2010, 10:40   #10
micron
Пользователь
 
Аватар для micron
 
Регистрация: 05.01.2010
Сообщений: 18
По умолчанию

все работает, спасибо за помощь!
micron вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверка Манжосов Денис :) Общие вопросы Delphi 4 17.10.2008 16:27
preg_match(); _SERGEYX_ PHP 6 09.10.2008 09:35
Множественная загрузка файлов Artem Общие вопросы Delphi 14 03.08.2007 20:38