Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
 Аватар для acupation
67 / 67 / 6
Регистрация: 26.03.2010
Сообщений: 546

Из текстовых смайлов в графические

21.02.2016, 16:09. Показов 2068. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!
Давно уже была функция по переводу тестовых смайлов в графические
PHP
1
2
3
4
5
6
7
8
9
10
function buildSmileImages($text) {
return preg_replace_callback('/\:([^\B:]+)\:/', function($matches) {
static $smile_html = '<img src="/img/smiles/%s.gif" align="absmiddle" />';
static $known_smiles = array(
'smile', 'lol', 'angry'
);
return in_array($matches[1], $known_smiles) ? sprintf($smile_html, $matches[1]) : $matches[0];
}, $text);
}
echo buildSmileImages("я смайлик :smile: и вот еще один :lol: последний :angry:");
сейчас поменялся формат массива на
PHP
1
2
3
4
5
6
7
8
9
$known_smiles = array(
array('id' => '1','code' => 'B)','location' => 'cool.png','greylocation' => 'cool-grey.png','emoticonbar' => '1'),
array('id' => '2','code' => '8)','location' => 'cool.png','greylocation' => 'cool-grey.png','emoticonbar' => '0'),
array('id' => '3','code' => '8-)','location' => 'cool.png','greylocation' => 'cool-grey.png','emoticonbar' => '0'),
array('id' => '4','code' => ':-(','location' => 'sad.png','greylocation' => 'sad-grey.png','emoticonbar' => '0'),
array('id' => '5','code' => ':(','location' => 'sad.png','greylocation' => 'sad-grey.png','emoticonbar' => '1'),
array('id' => '6','code' => ':sad:','location' => 'sad.png','greylocation' => 'sad-grey.png','emoticonbar' => '0'),
array('id' => '7','code' => ':cry:','location' => 'sad.png','greylocation' => 'sad-grey.png','emoticonbar' => '0'),
);
в 'code' - то, что нужно искать в тексте и менять.
в 'location' - имя и расширение картинки которые нужно подставить
в 'emoticonbar' - включен ли поиск и изменение этого смайла (0 - нет, 1 - да).

что-то до меня не допирает как переделать под новый массив. Хотел бы оставить на коллбэках т.к. смайлов 150шт грузится, а на коллбэках - самый быстрый вариант. Перегонять массивы тоже не хотелось бы т.к. это замедлит обработку...

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

Добавлено через 19 часов 4 минуты
может массиву $known_smiles присвоить ключи с именем 'code'? Так же попроще будет, наверно...
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.02.2016, 16:09
Ответы с готовыми решениями:

Автозамена текстовых смайлов на графические
Коллеги, добрый день. В веб-программировании я полный новичок, прошу помощи. Задачка типовая - нужно написать скрипт, который...

Замена текст. смайлов на графические.не найти ошибку
На моей страничке не работает замена текстового вида смайлов на графические. Вопрос в чем проблема. подскажите пожалуйста. вот код ...

Замена текстовых смайликов на графические
Подскажите, пожалуйста, что не так делаю. Нужно заменить текстовые смайлы на их изображение. У меня есть два варианта: 1)string text =...

3
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
21.02.2016, 18:57
Лучший ответ Сообщение было отмечено acupation как решение

Решение

acupation,
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
$known_smiles = array(
array('id' => '1','code' => 'B)','location' => 'cool.png','greylocation' => 'cool-grey.png','emoticonbar' => '1'),
array('id' => '2','code' => '8)','location' => 'cool.png','greylocation' => 'cool-grey.png','emoticonbar' => '0'),
array('id' => '3','code' => '8-)','location' => 'cool.png','greylocation' => 'cool-grey.png','emoticonbar' => '0'),
array('id' => '4','code' => ':-(','location' => 'sad.png','greylocation' => 'sad-grey.png','emoticonbar' => '0'),
array('id' => '5','code' => ':(','location' => 'sad.png','greylocation' => 'sad-grey.png','emoticonbar' => '1'),
array('id' => '6','code' => ':sad:','location' => 'sad.png','greylocation' => 'sad-grey.png','emoticonbar' => '0'),
array('id' => '7','code' => ':cry:','location' => 'sad.png','greylocation' => 'sad-grey.png','emoticonbar' => '0'),
);
 
$str = "я смайлик B) и вот еще один :-( последний :sad::sad:";
 
array_map(function($v) use(&$str)
    {
        $pattern = sprintf("/%s/", preg_quote($v['code']));
        $replacement = sprintf("<img src='/img/smiles/%s' align='absmiddle'>", $v['location']);
        $str = preg_replace($pattern, $replacement, $str);
    }, $known_smiles);
 
echo $str;
1
 Аватар для acupation
67 / 67 / 6
Регистрация: 26.03.2010
Сообщений: 546
21.02.2016, 19:52  [ТС]
pav1uxa, Спасибо! Осталось немного поколдовать, а то есть смайл inch: и и он режет первую часть смайла inch: и делает так: "Картинкаinch:"

Добавлено через 24 секунды
тут тоже самое я смотрю))))
0
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
21.02.2016, 20:07
Цитата Сообщение от acupation Посмотреть сообщение
Осталось немного поколдовать,
Колдовать ничего не надо, просто выстроить элементы массива в нужном порядке. Или назвать по нормальному без повторов.

Цитата Сообщение от acupation Посмотреть сообщение
тут тоже самое я смотрю))))
а тут и нет смайла :рinch:
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.02.2016, 20:07
Помогаю со студенческими работами здесь

Не обычные смайлы "Колобок" | Авторская сортировка, 100 смайлов + 8 бонусных смайлов
Всем доброго времени суток! Когда то, через торрент трекер, скачал огромный архив смайлов, в котором их было, около ~6500 шт. Провел...

Парсер смайлов
Здравствуйте! Замена символов смайлов на сами смайлы в тексте происходит так: foreach ($this-&gt;_aEmoticons as $sKey =&gt;...

Подстановка смайлов
Мне нужно найти &quot;:rofl:&quot; и заменить на &quot;&lt;img src=&quot;dir/file_name.gif&quot;&gt; &quot; Вот код: if (isset($_POST)) { $text = nl2br($_POST); ...

Вывод смайлов в js
Друзья помогите с выводом смайлов в div Имеется вот такой код вывода сообщения из textarea var d = document; function add() { ...

Рандом смайлов
Хочу сделать что-бы при каждой замене была другой смайл $status = str_replace(&quot;{smile}&quot;, random_smile(), $status); Сама...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru