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

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

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

 

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

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

тема: Спарсить числа в массив
 
 автор: Yuru   (23.09.2013 в 17:01)   письмо автору
 
 

Я слаб в регулярках. Есть строка вида

техттехттехт: 7/9/10/17/24/41 +8;23;12 техттехттехттехт
техт -абсолютно любые символы, постоянными будут только символы : и + (если имеются числа после +)
нужно получить числа 7,9,10,17,24,41 в один массив 8,23,12 - в другой
подстроки +8;23;12 может и не быть и чисел может быть разное количество

  Ответить  
 
 автор: Igorek   (24.09.2013 в 08:49)   письмо автору
 
   для: Yuru   (23.09.2013 в 17:01)
 


<?php
$s 
'техттехттехт: 7/9/10/17/24/41 +8;23;12 техттехттехттехт';

preg_match('#:\s*([^\s]*)\s*(?:\+([^\s]*))?#'$s$matches);
$a1 = (isset($matches[1])) ? explode('/'$matches[1]) : array();
$a2 = (isset($matches[2])) ? explode(';'$matches[2]) : array();

print_r($a1);
print_r($a2);

  Ответить  
 
 автор: Yuru   (24.09.2013 в 10:01)   письмо автору
 
   для: Igorek   (24.09.2013 в 08:49)
 

спасибо, но работает не совсем так как надо
в первый массив попадает дата : 22-09-2013 которая встречается ранее в строке. я думаю надо как то завязаться на разделителях / и ;
более полный пример исходной строки:
texttext Begin Date: 22-09-2013 Collation Results: 7/9/10/17/24/41 +8;23;12 Satisfaction Date: 25-09- 2013 texttexttexttext

  Ответить  
 
 автор: Igorek   (24.09.2013 в 11:05)   письмо автору
 
   для: Yuru   (24.09.2013 в 10:01)
 

а "Collation Results:" постоянная фраза? или текст совершенно произвольный?

  Ответить  
 
 автор: duhon   (27.09.2013 в 11:22)   письмо автору
 
   для: Yuru   (23.09.2013 в 17:01)
 


<?php
$subject 
'texttext Begin Date: 22-09-2013 Collation Results: 7/9/10/17/24/41 +8;23;12 Satisfaction Date: 25-09- 2013 texttexttexttext
texttext Begin Date: 22-09-2013 Collation Results: 7/9/10/17/24/41 +8; Satisfaction Date: 25-09- 2013 texttexttexttext
texttext Begin Date: 22-09-2013 Collation Results: 7/9/10/17/24/41 +8;23;12Satisfaction Date: 25-09- 2013 texttexttexttext
texttext Begin Date: 22-09-2013 Collation Results: 7/9/10/17/24/41 +8Satisfaction Date: 25-09- 2013 texttexttexttext
texttext Begin Date: 22-09-2013 Collation Results: 7/9/10/17/24/41 Satisfaction Date: 25-09- 2013 texttexttexttext
texttext Begin Date: 22-09-2013 Collation Results:7/9/10/17/24/41 Satisfaction Date: 25-09- 2013 texttexttexttext
texttext Begin Date: 22-09-2013 Collation Results: 7 +1 Satisfaction Date: 25-09- 2013 texttexttexttext
texttext Begin Date: 22-09-2013 Collation Results: 7+1 Satisfaction Date: 25-09- 2013 texttexttexttext
texttext Begin Date: 22-09-2013 Collation Results: 7+2
texttext Begin Date: 22-09-2013 Collation Results: 7'
;
preg_match_all('%:\s*(\d+(?=\s|$|/|\+\d)(?:/\d+)*)(?:\s*\+(\d+(?:;\d+)*))?(?:\D|$)%'$subject$resultPREG_PATTERN_ORDER);
print_r($result[1]);
print_r($result[2]);

на экране будет

php > print_r($result[1]);
Array
(
    [0] => 7/9/10/17/24/41
    [1] => 7/9/10/17/24/41
    [2] => 7/9/10/17/24/41
    [3] => 7/9/10/17/24/41
    [4] => 7/9/10/17/24/41
    [5] => 7/9/10/17/24/41
    [6] => 7
    [7] => 7
    [8] => 7
    [9] => 7
)
php > print_r($result[2]);
Array
(
    [0] => 8;23;12
    [1] => 8
    [2] => 8;23;12
    [3] => 8
    [4] => 
    [5] => 
    [6] => 1
    [7] => 1
    [8] => 2
    [9] => 
)

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

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