Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Еще раз регулярка

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
UNTRUSTED
Отправлено: 18 Апреля, 2012 - 10:06:24
Post Id


Частый гость


Покинул форум
Сообщений всего: 255
Дата рег-ции: Март 2012  


Помог: 2 раз(а)




Как сделать?


Условие:
Если в строке находит от 10 и более символов 'a', то меняет их на 5 символов 'a'?
 
 Top
EuGen Администратор
Отправлено: 18 Апреля, 2012 - 10:08:32
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)





?


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
UNTRUSTED
Отправлено: 18 Апреля, 2012 - 10:12:48
Post Id


Частый гость


Покинул форум
Сообщений всего: 255
Дата рег-ции: Март 2012  


Помог: 2 раз(а)




EuGen пишет:
aaaaa

Ну это самый простой вариант, а если таких много, и символов не 5 а 50 например?? Тогда уже получаеться
PHP:
скопировать код в буфер обмена
  1. $sData=preg_replace('/a{10,}/', 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', $sData);

Улыбка
а если еще больше 50-ти? Тогда вообще жесть!
 
 Top
EuGen Администратор
Отправлено: 18 Апреля, 2012 - 10:16:28
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




UNTRUSTED
str_repeat


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
UNTRUSTED
Отправлено: 18 Апреля, 2012 - 10:22:36
Post Id


Частый гость


Покинул форум
Сообщений всего: 255
Дата рег-ции: Март 2012  


Помог: 2 раз(а)




Warning: preg_replace() [function.preg-replace]: Compilation failed: number too big in {} quantifier at offset 9
google пишет:
Кол-во повторений в фигурных скобках {} в рег. выражениях имеет ограничение 65535

Вот это уже проблема!
Надо что то другое тогда думать, там более миллиона символов обрезать надо!
 
 Top
EuGen Администратор
Отправлено: 18 Апреля, 2012 - 10:26:55
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




UNTRUSTED
А зачем Вам указывать в модификаторе {} столько знаков? Почему просто не указать {10,} ? (то есть от 10 знаков)? Либо я неправильно понимаю задачу.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
UNTRUSTED
Отправлено: 18 Апреля, 2012 - 10:27:01
Post Id


Частый гость


Покинул форум
Сообщений всего: 255
Дата рег-ции: Март 2012  


Помог: 2 раз(а)




str_repeat, понял.. Его можно там использовать?
А вот тогда как такое замутить?

(Добавление)
EuGen пишет:
Почему просто не указать {10,} ? (то есть от 10 знаков)? А зачем Вам указывать в модификаторе {} столько знаков?

Вот почемуУлыбка
UNTRUSTED пишет:
a{4000000,}


Как тогда если не заменой, а просто поиском найти совпадение a{4000000,}?
 
 Top
Panoptik
Отправлено: 18 Апреля, 2012 - 10:31:46
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


Помог: 131 раз(а)





какую ценность имеет информация, если в ней 400кБ данных с одним символом?


-----
Just do it
 
 Top
UNTRUSTED
Отправлено: 18 Апреля, 2012 - 10:32:50
Post Id


Частый гость


Покинул форум
Сообщений всего: 255
Дата рег-ции: Март 2012  


Помог: 2 раз(а)




???
PHP:
скопировать код в буфер обмена
  1.   if (strpos("Hello, world!",strrepeat('a',4000000);

Может так?
 
 Top
EuGen Администратор
Отправлено: 18 Апреля, 2012 - 10:35:31
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




UNTRUSTED
Можно и через strpos. Дело другое, что подобный поиск - это серьезные затраты памяти.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
UNTRUSTED
Отправлено: 18 Апреля, 2012 - 10:41:07
Post Id


Частый гость


Покинул форум
Сообщений всего: 255
Дата рег-ции: Март 2012  


Помог: 2 раз(а)





Panoptik пишет:
какую ценность имеет информация, если в ней 400кБ данных с одним символом?

Потому их и надо снести к чертям собачьимУлыбка

(Добавление)
Да, работает!
PHP:
скопировать код в буфер обмена
  1. if(strpos($var,str_repeat('a',4000000))!==false){
  2.         return('Ошибка!!!=');
  3.       }

⌨ Страница сгенерирована за 0.39988 сек || Использовано памяти: 0.28MB Улыбка
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB