Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Поиск и замена смайлов

Сообщения:  [1-7] 

 
 автор: DDK   (27.01.2006 в 15:09)   письмо автору
 
   для: cheops   (25.01.2006 в 23:45)
 

Вы видимо всё-таки неправильно поняли исходные данные :) Но ничего, тут я сам уже сориентировался. Получилось с таким выражением:

$pattern = "|:dpsm([\d]{1,3}):|is";

Спасибо, что поставили на путь истинный ! :)

   
 
 автор: cheops   (25.01.2006 в 23:45)   письмо автору
 
   для: DDK   (25.01.2006 в 13:24)
 

Можно воспользоваться скриптом
<?php
  $text 
"Поможите слепить функцию preg_replace так, что бы тексты замены смайлов типа :dpsm1: или :dpsm222: т.е. формат текстов замены такой - 
:dpsm7-734: (# - число 0-9, всего чисел после dpsm идёт от одного до трёх) 
заменялись на теги "
;
//<img src="bla/bla/dpsm###.gif" border="0">
  
$pattern "|:dpsm[\d]-([\d]{3}):|is";
  echo 
preg_replace($pattern"<img src=\"bla/bla/dpsm\\1.gif\" border=\"0\">"$text);
?>

\\1 - это первые круглые скобки
\\2 - вторые и т.д.
Если вы их подставляете в строке второго параметра, та часть регулярного выражения, которая соответствует им будет подставлена в строку замены. Здесь \\1 соотвествует ([\d]{3}), т.е. трём цифрам.

   
 
 автор: DDK   (25.01.2006 в 14:12)   письмо автору
 
   для: DDK   (25.01.2006 в 13:24)
 

Мне главное объясните, как в регулярных выражениях использовать переменные, типа \\1...

   
 
 автор: DDK   (25.01.2006 в 13:24)   письмо автору
 
   для: DDK   (25.01.2006 в 13:06)
 

Пояснение ситуации: Просто вместо того, что бы создавать вручную массив с текстами замены и путями к смайлам я решил дать формат для имён файлов смайлов типа dpsm#-###.gif, и если в тексте встречается подходящий по формату текст замены, просто заменять его на тег картинки...

   
 
 автор: DDK   (25.01.2006 в 13:06)   письмо автору
 
   для: cheops   (25.01.2006 в 12:46)
 

Да :) # - этим символом я просто обозначил число... Т.е. в строке ввода текста смайлы вставляются в виде текстов замены, например:

...текст текст :dpsm5: текст...

или

...текст текст :dpsm565: текст...

Т.е. после dpsm обязательно должно идти число, которое в свою очередь может быть однозначным, двухзначным или трёхзначным (3 или 43 или 543). Если в строке находятся таки подстроки, соответствующие такому формату, то нужно узнать число после dpsm и заменить всю эту подстроку на картинку: <img src="smiles/dopsmiles/dpsm[тут число, которое мы узнали]" border="1"> (квадратные скобки не нужны, конечно же.

   
 
 автор: cheops   (25.01.2006 в 12:46)   письмо автору
 
   для: DDK   (25.01.2006 в 07:37)
 

Т.е. фрагмент #- удаляется и вместо dpsm#-###.gif пишется dpsm###.gif?

   
 
 автор: DDK   (25.01.2006 в 07:37)   письмо автору
 
 

Поможите слепить функцию preg_replace так, что бы тексты замены смайлов типа :dpsm1: или :dpsm222: т.е. формат текстов замены такой -

:dpsm#-###: (# - число 0-9, всего чисел после dpsm идёт от одного до трёх)
заменялись на теги

<img src="bla/bla/dpsm###.gif" border="0">

   

Сообщения:  [1-7] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования