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]   

> Без описания
Vaio
Отправлено: 09 Декабря, 2012 - 14:07:29
Post Id


Гость


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


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




Подскажите как сделать такую ​​регулярку:

человек вводит слова: test test.dll test.so

если test - добавлять .so = test.so
если test.dll заменять на test.so или если после точки что-то другое заменять на .so
если test.so оставить как есть

как такое реализовать?
 
 Top
Саныч
Отправлено: 09 Декабря, 2012 - 14:47:51
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


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




Что ж вас всех так на регулярки тянет... Тут вобще без них можно обойтись
PHP:
скопировать код в буфер обмена
  1. $str = ' .... ';
  2. $ext = strrchr($str, '.');
  3. if (!$ext)
  4.    $str .= '.so';
  5. else if ($ext != '.so')
  6.    $str = str_replace($ext, '.so', $str);


-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
Vaio
Отправлено: 09 Декабря, 2012 - 15:40:50
Post Id


Гость


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


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




Спасибо, но не проверяется каждое слово, а только 1

пример вводим test.dll test.so
получим test.dll test.so

вводим test.dll test
получим test.so
 
 Top
AlexAnder
Отправлено: 09 Декабря, 2012 - 15:51:27
Post Id



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


Покинул форум
Сообщений всего: 915
Дата рег-ции: Авг. 2012  
Откуда: Россия


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




Vaio пишет:
Спасибо, но не проверяется каждое слово, а только 1

пример вводим test.dll test.so
получим test.dll test.so

вводим test.dll test
получим test.so


PHP:
скопировать код в буфер обмена
  1. $text = 'test.dll test.so test';
  2. $str = explode(' ', $text);
  3. for($i=0;$i<sizeof($str);$i++)
  4. {
  5.   $ext = strrchr($str[$i], '.');
  6.   if (!$ext)
  7.      $str[$i] .= '.so';
  8.   else if ($ext != '.so')
  9.      $str[$i] = str_replace($ext, '.so', $str[$i]);
  10. }
  11.  
  12. echo '<pre>', print_r($str, 1), '</pre>';
  13. //or
  14. $str =  join(' ', $str);
  15. echo $str;

(Отредактировано автором: 09 Декабря, 2012 - 16:06:06)



-----
Оказывается, недостаточно читать справочники, чтобы правильно писать коды. sadex ©

Форумы стали местом обучения программированию, а не решения трудных вопросов. KingStar ©
 
 Top
Vaio
Отправлено: 09 Декабря, 2012 - 16:15:01
Post Id


Гость


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


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




AlexAnder, большое спасибо все работает.

А чтобы сделать наоборот, если указанное расширение после точки убирать

пример
вводим test test.so test.dll
получим test test test

нужно так сделать?

PHP:
скопировать код в буфер обмена
  1. $text = 'test.dll test.so test';
  2. $str = explode(' ', $text);
  3. for($i=0;$i<sizeof($str);$i++)
  4. {
  5.   $ext = strrchr($str[$i], '.');
  6.   if (!$ext)
  7.      $str[$i] .= '';
  8.   else if ($ext != '')
  9.      $str[$i] = str_replace($ext, '', $str[$i]);
  10. }
  11.  
  12. $str =  join(' ', $str);
  13. echo $str;
 
 Top
LIME
Отправлено: 09 Декабря, 2012 - 16:27:06
Post Id


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


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


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




зачем столько условий?
substr и strrpos(".")
а потом можно и добавить екст
с телефона код не пишу

(Отредактировано автором: 09 Декабря, 2012 - 16:30:02)

 
 Top
Vaio
Отправлено: 09 Декабря, 2012 - 16:36:58
Post Id


Гость


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


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




Если кто-то напишет как сократить код также буду очень благодарен
 
 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