Есть папки со смайлами anime static тут еще могут быть папки с другими смайлами... При клике смайлы вставляются в textarea Надо заменить символы на html-теги img Пример: $mess= "Всем привет :anime/1.gif: желаю удачно поработать :static/2.gif:"; Путь до папки <img src="images/smile/" /> В итоге должно получиться - "Всем привет <img src="images/smile/anime/1.gif" /> желаю удачно поработать <img src="images/smile/static/2.gif" />" Пробовал так PHP: preg_match_all("/:(.*):/U", $mess, $out, PREG_PATTERN_ORDER); foreach ($out as $value => $a) { foreach ($a as $b) { $str .= $b."<br>"; } } return $str; Результат HTML: :anime/1.gif: :static/2.gif: anime/1.gif static/2.gif Что делать дальше ума не приложу
Я знаю трёх (как минимум) хороших людей, которые могут помочь - это Gromo, igordata и titch =) Ну и Padaboo, конечно. Ткните носом, где почитать или на пример.
не, я в регулярках не шарю. но тут мне кажется достаточно забить в массив коды смайлов, забить в другой массив сами смайлы и при выводе страницы делать http://ru.php.net/manual/en/function.str-replace.php ибо ей можно скормить сразу оба этих массива и она все поменяет сама. первый пример там же, третья часть: PHP: <? // Provides: You should eat pizza, beer, and ice cream every day $phrase = "You should eat fruits, vegetables, and fiber every day."; $healthy = array("fruits", "vegetables", "fiber"); $yummy = array("pizza", "beer", "ice cream"); $newphrase = str_replace($healthy, $yummy, $phrase);
я не хороший. просто помогаю там, где интересно и/или легко тут нужен preg_replace для самой простой замены найденных элементов (самый лёгкий вариант) и preg_replace_callback для того, чтобы заменять "по умному". самый лёгкий вариант: PHP: <?php $text = "Всем привет :anime/1.gif: желаю удачно поработать :static/2.gif:"; $text = preg_replace('#:([a-z0-9/.]+\.gif):#sUi', '<img src="images/smile/$1">', $text); echo htmlspecialchars($text); ?> для замены "по умному" пишется функция, которая получает строку и смотрит есть ли такой файл. если есть - возвращает <img src="... , а если нету - возвращает ту же строку.
Gromo, Вы настоящий друг, огромное спасибо. Про preg_replace думал, и даже пытался, но получалась ерунда, про $1 в жизни бы не догадался. igordata, я так делал, когда смайлы лежали в одной директории и их было не более сотни, но пользователи просят еще и еще, в итоге пришлось раскидать по папкам (анимация, статичные, мишки, обезьянки и т.д. =)). Теперь можно закинуть папку с новыми смайлами на сервер и будет всем счастье. Спасибо.
PHP: <? $callback = function($matches){ if(file_exists("%img_dir%/smile/" . $matches[1])){ return '<img src="images/smile/' . $matches[1] . '">'; } else { return $matches[1]; } } $text = "Всем привет :anime/1.gif: желаю удачно поработать :static/2.gif:"; $text = preg_replace_callback('#:([a-z0-9/.]+\.gif):#sUi', $callback, $text); echo htmlspecialchars($text);
устроил себе геморой, понимаешь! =) учи БД! При заливке смайла в бд записываешь его название, код, и волшебный миме-тип. Сам смайлик пихаешь в папку под именем его id в базе без расширения и вобще не парясь.