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

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

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

 

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

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

тема: Выборка целых чисел из строки
 
 автор: mgl   (17.11.2009 в 11:52)   письмо автору
 
 

Необходимо написать регулярное выражение для выборки целых чисел из строки $text =


4
lala-blabla ! =))
 :( 
457         -1.000001
32
98
2           +3.14  12637 9812 89123789
1
O   O1         01
1O
1OO
zero!
df1000 ggg...
-5
105
-2006
wassauupp!!

У меня получилось примерно следующее:

$numarray = preg_match_all('/[+-]?\d+(?=\s)/',$text,$array);

Данное выражение находит совпадения :

[0] => 4
[1] => 457
[2] => 000001 // Числа после десятичной точки от (-1.000001)
[3] => 32 
[4] => 98 
[5] => 2 
[6] => 14           // Число после десятичной точки от (+3.14)
[7] => 12637 
[8] => 9812 
[9] => 89123789 
[10] => 1 
[11] => 1 
[12] => 01 
[13] => 1000
[14] => -5
[15] => 105
[16] => -2006

Помогите избавиться от чисел [6] и [2]

  Ответить  
 
 автор: cheops   (17.11.2009 в 16:41)   письмо автору
 
   для: mgl   (17.11.2009 в 11:52)
 

А вы получите все полноценные цифры при помощи
'/[+-]?[\d\.]+(?=\s)/'
И отсейте все не целые числа пройдя по результатам циклом и проверив каждое из число при помощи функции is_int().

  Ответить  
 
 автор: ....   (17.11.2009 в 16:45)
 
   для: mgl   (17.11.2009 в 11:52)
 

что-то такое
'/[+-]?(?<![\.,])\b\d+(?=\s)/'
Вместо (?=\s) можно тоже поставить \b - конец cлова и (?![\.,]) нет последующеё точки или запятой. Ато может быть число в самом конце текста

  Ответить  
 
 автор: mgl   (17.11.2009 в 21:33)   письмо автору
 
   для: ....   (17.11.2009 в 16:45)
 

Спасибо ...., всё отлично получилось!

  Ответить  
 
 автор: duv   (17.11.2009 в 17:22)
 
   для: mgl   (17.11.2009 в 11:52)
 

  $numarray = '/((?<!.)|(?<=\s))[+-]?[0-9]+(?=\s)/'; 

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

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