1

Тема: Автозаміна смайлів на сайті

Привіт, люд! Потрібна ваша допомога, не можу рішення в інеті знайти... потрібно якось реалізувати автозаміну текстових смайлів на gif зображення? Наприклад :-) або : ) на :)

2

Re: Автозаміна смайлів на сайті

Подивіться як на реплейсі організовано, Ваше повідомлення виглядає так (control + u)

<p>Привіт, люд! Потрібна ваша допомога, не можу рішення в інеті знайти... потрібно якось реалізувати автозаміну текстових смайлів на gif зображення? Наприклад :-) або : ) на <img src="http://replace.org.ua/extensions/nya_smiles/img/ab.gif" alt=":)" /></p>

т.е. просто шукаєте смайл і замінюєте (str_replace() наприклад) на картинку в розмітці html.

x
Подякували: Replace, jerk19892

3

Re: Автозаміна смайлів на сайті

str_replace найпростіше рішення, проте прийдеться викликати його велику кількість разів (для кожного смайлу).
Можна скористатись функцією strt, але там вже буде проблема з пробілами. Смайли краще заміняти лише там де є пробільні символи.
Ну як варіант використати регулярні вирази, але залишається така ж проблема як і в str_replace.
На цьому форумі використовуються регулярні вирази.

Подякували: koala, jerk19892

4

Re: Автозаміна смайлів на сайті

До речі, може хтось не в курсі, є дуже класний сайт для перевірки регулярних виразів (хоча є невеличка відмінність між регулярками в JS та PHP)

Подякували: Chemist-i, jerk19892

5 Востаннє редагувалося VTrim (25.01.2015 10:01:46)

Re: Автозаміна смайлів на сайті

Replace написав:

str_replace найпростіше рішення, проте прийдеться викликати його велику кількість разів (для кожного смайлу).
Можна скористатись функцією strt, але там вже буде проблема з пробілами. Смайли краще заміняти лише там де є пробільні символи.
Ну як варіант використати регулярні вирази, але залишається така ж проблема як і в str_replace.
На цьому форумі використовуються регулярні вирази.

Не треба циклів або повторів функції,str_replace приймає в аргумент масиви.

=)
Подякували: Replace, jerk19892

6

Re: Автозаміна смайлів на сайті

Ось прототип)

$smileMap = [
' =)'=>' 1.gif'
];

echo strtr($text, $smileMap);
Подякували: jerk19891

7 Востаннє редагувалося P.Y. (25.01.2015 14:59:44)

Re: Автозаміна смайлів на сайті

funivan написав:

Ось прототип)

$smileMap = [
' =)'=>' 1.gif'
];

Тоді вже так (щоб отримати html з картинками, а не їх іменами):

$smileMap = [
' =)'=>' <img src=1.gif>'
];

Або можна спершу описати мапу імен, а тоді пройтися по ній foreach'ем і позамінювати імена на теги.

py -3 -m pip install git+https://github.com/snoack/python-goto
∩⍴○⌈⍴⍺/∧\∨/⊢○ ⌿⍀⍴⌊
Подякували: jerk19891

8 Востаннє редагувалося jerk1989 (25.01.2015 16:23:00)

Re: Автозаміна смайлів на сайті

Replace написав:

str_replace найпростіше рішення, проте прийдеться викликати його велику кількість разів (для кожного смайлу).
Можна скористатись функцією strt, але там вже буде проблема з пробілами. Смайли краще заміняти лише там де є пробільні символи.
Ну як варіант використати регулярні вирази, але залишається така ж проблема як і в str_replace.
На цьому форумі використовуються регулярні вирази.

Ну, я використав пробіл тому, що тут йде автозаміна смайлів, мав на увазі 2 стандартних...
А з масивами я мало працював, буду пробувати

9 Востаннє редагувалося Sensetivity (25.01.2015 18:30:55)

Re: Автозаміна смайлів на сайті

$you_message  = "Посмішка :) радість =), сум :(";
$text_smiles = array(":)", "=)", ":(");
$img_smiles   = array("{{sm1.gif}}", "{{sm2.gif}}", "{{sm3.gif}}");
$you_message = str_replace($text_smiles, $img_smiles, $you_message);
echo $you_message;

Якось так... варіант для шаблонізатора або ж одразу можна вставити html розмітку.

Try http://phptester.net/

Подякували: jerk19891

10

Re: Автозаміна смайлів на сайті

щось подібне знайшов на те, що мені потрібно... ajaxs.ru/lesson/php/7-zamena_tekstovyh_smajlikov_na_graficheskie.html

11

Re: Автозаміна смайлів на сайті

jerk1989 написав:

щось подібне знайшов на те, що мені потрібно... ajaxs.ru/lesson/php/7-zamena_tekstovyh_smajlikov_na_graficheskie.html

Я вам те саме написав. Тільки без html коду, бо я не знаю, де і як у вас називаються файли.

Подякували: jerk19891