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]   

> Без описания
kochan10
Отправлено: 29 Июня, 2010 - 13:04:16
Post Id


Гость


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


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




Есть файл. Скажем, desktop.ini
Нужно в нём вставить перед последней точкой переменную.
Делаю так:
PHP:
скопировать код в буфер обмена
  1. $pattern="/^((.*)+)(\.[a-zA-Z0-9]+)$/i";
  2. $file=preg_replace($pattern,"\1".$i."\2",$file);

Не работает. Помогите, пожалуйста.

(Отредактировано автором: 29 Июня, 2010 - 13:19:33)

 
 Top
ALEN
Отправлено: 29 Июня, 2010 - 13:22:29
Post Id



Участник


Покинул форум
Сообщений всего: 1459
Дата рег-ции: Авг. 2008  
Откуда: Крым


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




PHP:
скопировать код в буфер обмена
  1. $file=preg_replace("/^(.*)\.(.*)$/i","\${1}".$i.".\${2}",$file);


чем плох вариант?
 
 Top
kochan10
Отправлено: 29 Июня, 2010 - 13:31:02
Post Id


Гость


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


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




точек может быть ведь и несколько. и ещё появилась необходимость изменять такое: desktop(2).ini на desktop(3).ini.
Т.е. если в скобках есть цифра, увеличить её на единицу.
 
 Top
ALEN
Отправлено: 29 Июня, 2010 - 14:12:34
Post Id



Участник


Покинул форум
Сообщений всего: 1459
Дата рег-ции: Авг. 2008  
Откуда: Крым


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




kochan10
Попробуйте прежде чем говорить, только перед последней происходят изменения, а вот со скобками вот так:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $file="name(246)text.php(2).txt.html";
  3. $i='-site.ru';
  4. function prc($match){ return "(".($match[1]+1).")"; }
  5. $file=preg_replace("/^(.*)\.(.*)$/i","\${1}".$i.".\${2}",$file);
  6. echo $file=preg_replace_callback("/\(([0-9]*)\)/isU","prc",$file);
  7. ?>


Тестируй!
 
 Top
kochan10
Отправлено: 29 Июня, 2010 - 14:22:30
Post Id


Гость


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


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




Да, спасибо, ошибся=)
Только ещё один момент. Нужно, чтобы переменная $i добавлялась только тогда, когда нету скобок с цифрами. Она и есть (1). Как в винде при копировании файлов.
 
 Top
JustUserR
Отправлено: 29 Июня, 2010 - 17:09:39
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


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




kochan10 пишет:
Только ещё один момент. Нужно, чтобы переменная $i добавлялась только тогда, когда нету скобок с цифрами. Она и есть (1). Как в винде при копировании файлов
То есть вам нужно сначала проверить наличие числа перед последним расширением и если оно имеется в круглых скобках то инкреминировать его - в таком случае проще обойтись без регулярного выражение с помощью обычной стоковой функции поиска с конца rindex - конкретно вы отбрасываете расширение с точкой и смотрите наличие скобок и значения в них и после соединяете стороку заново


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
kochan10
Отправлено: 30 Июня, 2010 - 09:28:31
Post Id


Гость


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


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




Понятно, спасибо=)
 
 Top
JustUserR
Отправлено: 30 Июня, 2010 - 14:34:18
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


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




kochan10 пишет:
Понятно, спасибо=)
Пожалуйста! Кроме того в данном случае использование строковых функций будет работать эффективнее чем регулярное выражение - поскольку просмотр сразу будет осуществляться с конца и не нужны дополнительные ресурсы на вызов callback-функции Однако при разборе строки таким образом полезно учесть неделимые расширения типа .tar.gz


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 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