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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> вытащить повторяющуюся группу цифр в числе, регулярка не работает 
V
    Опции темы
NLspieler
Дата 20.9.2009, 23:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Есть строка цифр,
например '0.777888123123123123123123123123123123123123123123123123123123123123123123'
Нужно при помощи регулярки определить есть ли в ней периодически повторяющиеся числа 
и определить их
(в этом примере это 123)


Попробовал написать "очевидную" на первую взгляд регулярку с использованием ссылок
Код

//
$reg = '/(\s+)\l\l\l\l\l\l/' ;
$res = preg_match ($reg , $number) ;
echo $res ;
//


Но получаю ошибку интрпретатора:
Код

Warning: preg_match() [function.preg-match]: Compilation failed: PCRE does 
not support \L, \l, \N, \U, or \u at offset 7 in Z:\home\localhost\www\drob\drob.php on line 35


Только начал немного понимать регулярки, поэтому наверное в чем то ошибся. 
Подскажите, добрые люди.

Это сообщение отредактировал(а) NLspieler - 20.9.2009, 23:39
PM MAIL   Вверх
NLspieler
Дата 21.9.2009, 02:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Понял, в чем моя ошибка. 
Код

$reg = '/(\d+)\1\1/' ;

Нужно было писать не буквы l, а цифру 1


Цель ближе, но все таки не достигнута.
Код

$number = '0.777888123123123123123123123123123123123123123123123123123123123123123123' ;
$reg = '/(\d+)\1\1\1\1\1/' ;
preg_match ($reg , $number, $array);
print_r ($array) ;


Результат: 
Код

Array 
( 
    [0] => 123123123123123123123123123123123123123123123123123123 
    [1] => 123123123
)

Не совсем то, что нужно, но уже ближе к истине.
Как в результате выполнения функции, получить то, что указано в скобках?

Это сообщение отредактировал(а) NLspieler - 21.9.2009, 02:47
PM MAIL   Вверх
NLspieler
Дата 21.9.2009, 03:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Как, оказалось 
значение указанное в скобках как раз таки и хранится в $array[1]

Пришлось немного подумать, но все таки все получилось.

Код

preg_match ('/(\d+)\1\1\1\1\1/' , $number, $array) ;
$arrays[] = $array[1] ;
do
{
    $true = preg_match('/(\d+)\1/' , $array[1], $array) ;
    $arrays[] = $array[1] ;
}
while ($true) ;
$count = count($arrays) - 2 ;
for ($n = $count ; $n >= 0 ; $n-- )
{
    $p = $arrays[$n] ;
    $reg = "/$p$p$p$p$p$p/" ;
    if (preg_match($reg , $number)) break;
}
echo $p ;


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


 




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


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

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