главная страница каталог файлов полезные статьи документация форум лицензионное соглашение
главная страница новости документация полезно знать каталог файлов форум
о проекте/об авторе примеры работ
подурачимся? :)
поиск по сайту

введите слово или фразу для поиска:

Где искать:

слово или фразу

точное совпадение

мои благодарности

PHP-Nule по-русскиСайт и форум русской поддержки CMS PHP-Nuke. Особая благодарность админу этого сайта Михе hard'у

DKlab - web-технологииЗа «Денвера» и за бесценные советы, почерпнутые из книг Д. Котерова

Sypex Dumper - быстрый и удобный бэкап MySQLУникальная утилита для создания BackUp баз данных сайтов.


А еще я благодарю свой хостинг — за шуструю и бесперебойную работу :)

ваш аккаунт
логин:
пароль:
запомнить меня 


регистрация забыли пароль?
последние статьи

FireFox + phpMyAdmin + подлый плагин
Это скорее не статья, а предупреждение тем, кто устал и внимание сильно рассеяно.

Свихнулись штоле с этим Рождеством!?
Город ВЫМЕР! А еще меня, легшего спать в шесть утра, в семь(!) разбудил маленький негодяй, пришедший...

Нифига себе - продлил домен...
100 рублей конечно не те деньги, из за которых стоит сильно расстраиваться, но осадочек в душе остался...

С этим срочно надо что то делать
Склероз добивает. По-уши загружен загружен всякой дрянью — ничего не помню. Бумажечки не помогают — буду писать еще и тут.

Защита и лечение компьютера от вирусов
По работе мне довольно часто приходиться сталкиваться с компьютерами, зараженными вирусами (на самом деле не всякая...

Форекс клуб

последние сообщения на форуме

смайлики. Часть 2.

12 апреля 2008

В прошлой статье я писал, как добавить к текстовому полю формы JavaScript, который добавляет в форму BB-код смайлика при клике по картинке, здесь же расскажу о том, что нам с ними, этими BB-кодами делать дальше, а именно — как их обработать в PHP-скрипте.

Сразу хочу обрадовать — никакого кошмара про регулярные выражения в статье не будет. Да и зачем они? Перед нами по-сути стоит весьма простая задача — преобразовать конкретный набор символов на столь-же определенный тег со ссылкой на изображение.

В этой статье я воспользуюсь формой со смайлами из первой части урока — «Добавляем в форму смайлики». Допустим, пользователь ввел текст в нашу форму, и PHP-скрипту на обработку «досталась» переменная $variable с таким значением:

$variable = "Привет, как дела? :) А я вот тут к вам пришел  :smoke: Вот так 8)";

Теперь наша задача — преобразовать «символосочетания» :), :smoke: и 8) в HTML-теги . Этим займется функция strtr. Выражаясь простым языком — эта функция просто заменяет одно на другое. Ее незаменимая способность — замена в массивах, и именно этим мы и воспользуемся, написав массив наших символов и теги картинок, на которые мы их будем заменять. Вот как это будет выглядеть:

$variable = strtr($variable, array(
    ':)'=>'',
    ':('=>'',
    :babah:'=>'',
    '8)'=>'',
    ';)'=>'',
    ':sorry:'=>''
));

В принципе, это все — нужного результата мы добились, но чаще всего бывает, что смайлики требуются не в одном скрипте, а в нескольких (гостевая книга, комментарии в новостях, в статьях и т.д.), и переписывать один и тот же код много раз может надоесть. По этому мы немного «усовершентсвуем» наш код, превратив его в функцию. Эту функцию необходимо записать в какой-либо файл, подключаемый ко всем скриптам — как правило, в любой нормальной системе управления сайтами таковые имеются. Если нет — то можно создать отдельный php-файл с этой функцией и подключать его к нужным скриптам командой include или require.

Собственно, сама функция:

function replase_smile($variables){
$modified = strtr($variables, array(
        ':)'=>'',
        ':('=>'',
        ':babah:'=>'',
        '8)'=>'',
        ';)'=>'',
        ':sorry:'=>''
    ));
    return $modified;
}

Теперь нам остается только обработать нужную переменную нашей функцией:

$variable = replase_smile($variable);

Вот теперь — действительно все. Надеюсь, это принесет какую либо пользу ;) .

Дополнительно:

просмотров: 74276 комментариев: 20



комментировать:
 
Ваше имя:
сайт или e-mail:
текст комментария:
PicasOo 05 сентября 2010
Johnny, о Боже... у тебя сплошной говнокод! Вот так правильно:
<?php
while ($myrow3 = mysql_fetch_assoc($result3))
{
$myrow3['text'] = strtr($myrow3['text'], array(
':)'=>'<img src="img/smile/smile.gif">',
':('=>'<img src="img/smile/sad.gif">',
';)'=>'<img src="img/smile/wink.gif">',
':cool:'=>'<img src="img/smile/cool.gif">',
':cry:'=>'<img src="img/smile/cry.gif">',
'o_O'=>'<img src="img/smile/shok.gif">',
':lol:'=>'<img src="img/smile/lol.gif">',
':mad:'=>'<img src="img/smile/mad.gif">',
':yahoo:'=>'<img src="img/smile/yahoo.gif">',
':D'=>'<img src="img/smile/biggrin.gif">',
':friends:'=>'<img src="img/smile/friends.gif">',
':ok:'=>'<img src="img/smile/ok.gif">',
':yes:'=>'<img src="img/smile/yes.gif">',
':no:'=>'<img src="img/smile/no.gif">',
':victory:'=>'<img src="img/smile/victory.gif">',
':yu:'=>'<img src="img/smile/yu.gif">',
':nyam:'=>'<img src="img/smile/nyam.gif">',
':rtfm:'=>'<img src="img/smile/rtfm.gif">'
));
echo "<p>".$myrow3["text"]."</p>";
}
?>
сразу видно что ты смотрел Попова, печально..

 

Johnny 18 мая 2010
<? $myrow3 = mysql_fetch_array($result3);
do{
$myrow3['text'] = strtr($myrow3['text'], array(
':)'=>'<img src="img/smile/smile.gif">',
':('=>'<img src="img/smile/sad.gif">',
';)'=>'<img src="img/smile/wink.gif">',
':cool:'=>'<img src="img/smile/cool.gif">',
':cry:'=>'<img src="img/smile/cry.gif">',
'o_O'=>'<img src="img/smile/shok.gif">',
':lol:'=>'<img src="img/smile/lol.gif">',
':mad:'=>'<img src="img/smile/mad.gif">',
':yahoo:'=>'<img src="img/smile/yahoo.gif">',
':D'=>'<img src="img/smile/biggrin.gif">',
':friends:'=>'<img src="img/smile/friends.gif">',
':ok:'=>'<img src="img/smile/ok.gif">',
':yes:'=>'<img src="img/smile/yes.gif">',
':no:'=>'<img src="img/smile/no.gif">',
':victory:'=>'<img src="img/smile/victory.gif">',
':yu:'=>'<img src="img/smile/yu.gif">',
':nyam:'=>'<img src="img/smile/nyam.gif">',
':rtfm:'=>'<img src="img/smile/rtfm.gif">'
));
printf ("<p>%s</p>",$myrow3["text"]);
}
while ($myrow3 = mysql_fetch_array($result3)); ?>

 

Miheros 01 мая 2010
спс, очень пригодилось

 

Old_Chroft 26 апреля 2010
Mike, если под smiles.php подразумевается файл, в котором содержится код функции replase_smile - то никак. И незачем. Эта функция - обработчик уже имеющихся данных, в форме она не нужна.

 

Mike 25 апреля 2010
как подключить файл smiles.php к html форме?

 

Old_Chroft 24 ноября 2009
Валентина, этот код к форме как к таковой отношения не имеет. Можно конечно во время обработки данных из формы преобразование сделать - но это не очень хорошая идея: представьте, что вы изменили имя папки с картинками - а в базе они уже жестко прописаны. Выше описанную функцию нужно вставлять перед выводом комментариев.

 

Валентина 24 ноября 2009
А куда именно вставлять этот код? после формы?