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 Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
Платинум
Отправлено: 19 Октября, 2010 - 20:11:54
Post Id



Частый гость


Покинул форум
Сообщений всего: 223
Дата рег-ции: Апр. 2009  
Откуда: Пермь


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




Доброе время суток помогите составить Регулярку!
Есть текст:

Спойлер (Отобразить)


Надо все, что после Adena , а именно 324 - 579 уможить на 1000, а все остальное оставить как есть
 
My status
 Top
Uchkuma
Отправлено: 19 Октября, 2010 - 20:23:07
Post Id



Участник


Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010  
Откуда: Киров


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




Что именно умножить на 1000? Т.е. должно замениться на 324000 - 579000?
 
 Top
Платинум
Отправлено: 19 Октября, 2010 - 20:25:32
Post Id



Частый гость


Покинул форум
Сообщений всего: 223
Дата рег-ции: Апр. 2009  
Откуда: Пермь


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




Uchkuma пишет:
Т.е. должно замениться на 324000 - 579000?

Да, именно.
(Добавление)
У меня таких строк около 1500, в каждой эти цифры разные.

(Отредактировано автором: 19 Октября, 2010 - 20:30:48)

 
My status
 Top
Ch_chov
Отправлено: 19 Октября, 2010 - 20:31:24
Post Id



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


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


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




Платинум, опять линейку ломаешь? Радость
 
 Top
Платинум
Отправлено: 19 Октября, 2010 - 20:32:05
Post Id



Частый гость


Покинул форум
Сообщений всего: 223
Дата рег-ции: Апр. 2009  
Откуда: Пермь


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




Почему опять ? оО
 
My status
 Top
Uchkuma
Отправлено: 19 Октября, 2010 - 20:32:12
Post Id



Участник


Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010  
Откуда: Киров


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




PHP:
скопировать код в буфер обмена
  1. preg_replace('(?<=Adena )([0-9]+) - ([0-9]+)', '\${1}000 - \${2}000', $str);
 
 Top
movEAX
Отправлено: 19 Октября, 2010 - 20:54:42
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 750
Дата рег-ции: Авг. 2009  


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




Uchkuma пишет:
preg_replace('(?<=Adena )([0-9]+) - ([0-9]+)', '\${1}000 - \${2}000', $str);

Забыл кое-что)


-----
армия.. самое убогое место
 
 Top
Платинум
Отправлено: 19 Октября, 2010 - 21:04:46
Post Id



Частый гость


Покинул форум
Сообщений всего: 223
Дата рег-ции: Апр. 2009  
Откуда: Пермь


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




Uchkuma пишет:
$str = preg_replace('(?<=Adena )([0-9]+) - ([0-9]+)', '\${1}000 - \${2}000', $str);
, ага что то не получается результатся.
 
My status
 Top
Uchkuma
Отправлено: 19 Октября, 2010 - 21:29:09
Post Id



Участник


Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010  
Откуда: Киров


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




movEAX, Платинум, да, границы шаблона забыл (((
PHP:
скопировать код в буфер обмена
  1. preg_replace('/(?<=Adena )([0-9]+) - ([0-9]+)/', '\${1}000 - \${2}000', $str);
 
 Top
Платинум
Отправлено: 19 Октября, 2010 - 21:32:30
Post Id



Частый гость


Покинул форум
Сообщений всего: 223
Дата рег-ции: Апр. 2009  
Откуда: Пермь


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




Шас хоть текст появился, но без изменений.
 
My status
 Top
Uchkuma
Отправлено: 19 Октября, 2010 - 21:44:55
Post Id



Участник


Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010  
Откуда: Киров


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




Хм.. может проблема в пробельных символах? Попробуйте такой шаблон:
PHP:
скопировать код в буфер обмена
  1. '/(?<=Adena\s+)([0-9]+)\s+-\s+([0-9]+)/'
 
 Top
Платинум
Отправлено: 19 Октября, 2010 - 21:53:22
Post Id



Частый гость


Покинул форум
Сообщений всего: 223
Дата рег-ции: Апр. 2009  
Откуда: Пермь


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




Uchkuma пишет:
'/(?<=Adena\s+)([0-9]+)\s+-\s+([0-9]+)/'

к сожеленью тоже не работает, даже ничего на экране нету.
мне кажется, что проблема кроется тут ([0-9]+) т.к. я пробовал подставить (.*?)
вместо цифры заменялись на ${1}000,${2}000

(Отредактировано автором: 19 Октября, 2010 - 22:01:18)

 
My status
 Top
Uchkuma
Отправлено: 19 Октября, 2010 - 22:03:41
Post Id



Участник


Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010  
Откуда: Киров


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




Оказывается в просмотре назад строка должна быть фиксированной длины
PHP:
скопировать код в буфер обмена
  1. '/(?<=Adena\s)([0-9]+)\s+-\s+([0-9]+)/'

(Добавление)
Платинум пишет:
(.*?)
Да, но это не совсем правильно. Да и жадность в подмаске не за чем выключать. Еще уберите экранирование у долларов в замене.
 
 Top
Платинум
Отправлено: 19 Октября, 2010 - 22:10:17
Post Id



Частый гость


Покинул форум
Сообщений всего: 223
Дата рег-ции: Апр. 2009  
Откуда: Пермь


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




Вот так вот работает :
CODE (htmlphp):
скопировать код в буфер обмена
  1. preg_replace('/(?<=Adena\s)\s+([0-9]+)\s+-\s+([0-9]+)/', '${1}000 - ${2}000', $str);


Спасибо тебе огромное за помошь!!! Радость
 
My status
 Top
Uchkuma
Отправлено: 19 Октября, 2010 - 22:15:44
Post Id



Участник


Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010  
Откуда: Киров


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




Платинум, пожалуйста!
Вот знаю ведь, как нужно! Голова сейчас плохо соображает, дай думаю сверюсь с документацией на нашем любимом сайте. А там написано:
Цитата:
При использовании замены по шаблону с использованием ссылок на подмаски может возникнуть ситуация, когда непосредственно за маской следует цифра. В таком случае нотация вида \\n приводит к ошибке: ссылка на первую подмаску, за которой следует цифра 1, запишется как \\11, что будет интерпретировано как ссылка на одиннадцатую подмаску. Это недоразумение можно устранить, если воспользоваться конструкцией \${1}1, указывающей на изолированную ссылку на первую подмаску, и следующую за ней цифру 1.
Вот нафига здесь у бакса экранирование нарисовано?

EuGen, RomAndry, уберите!
preg_replace
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Регулярные выражения »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB