|
|
|
| Я слаб в регулярках. Есть строка вида
техттехттехт: 7/9/10/17/24/41 +8;23;12 техттехттехттехт
техт -абсолютно любые символы, постоянными будут только символы : и + (если имеются числа после +)
нужно получить числа 7,9,10,17,24,41 в один массив 8,23,12 - в другой
подстроки +8;23;12 может и не быть и чисел может быть разное количество | |
|
|
|
|
|
|
|
для: 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);
|
| |
|
|
|
|
|
|
|
для: 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 | |
|
|
|
|
|
|
|
для: Yuru
(24.09.2013 в 10:01)
| | а "Collation Results:" постоянная фраза? или текст совершенно произвольный? | |
|
|
|
|
|
|
|
для: 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, $result, PREG_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] =>
)
|
| |
|
|
|