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

160
02 июля 2017, 15:41

Пользователь вводит сообщение, оно ajax-ом отправляется в php и там нужно определить есть ли в нем текстовые смайлы.

$message = $_POST['message']; 
$smail = array(":)", ":(");
$grafic = array("<img src = '../image/Smile.png' alt='Smile' align='middle'>",
"<img src = '../image/Sad.png' alt='Smile' align='middle'>");
$new_message = str_replace($smile, $grafic, $message);

Далее $new_message помещается в массив, кодируется в json, записывается и отправляется обратно в ajax если все успешно, a он в свою очередь показывает сообщение.

$content = array("time" => $time, "user" => $user, "message"  => $new_message);
file_put_contents($file, json_encode($content, JSON_PRETTY_PRINT),FILE_APPEND);
echo json_encode($content);

Вот вывод на экран сообщений.

success: function(arr) {
            arr = $.parseJSON(arr)
            $('#messages').append($('.mess_hide').clone().addClass('mess_tmp').removeClass('mess_hide'));
            $('.mess_tmp>.time').html(arr.time);
            $('.mess_tmp>.name').html(arr.user);
            $('.mess_tmp>.message').html(arr.message);
            $('.mess_tmp').removeClass('mess_tmp');
        }

А это html

<table id="messages">
    <tr class="mess_hide">
        <td class="time"></td>
        <td class="name"></td>
        <td class="message"></td>
    </tr>
</table>

Но не работает, что может быть не так?

Answer 1

Во-первых: у вас опечатка в $smail = array(":)", ":("); заменить надо на $smile.
Во-вторых: как то сложно получается, аяксом отправляется запрос. Думаю стоит просто использовать библиотеку, например, CSS Emoticons.

Вам всеголишь нужно подключить её:

<link href="stylesheets/jquery.cssemoticons.css" media="screen" rel="stylesheet" type="text/css" /> 
<script src="javascripts/jquery.js" type="text/javascript"></script> 
 <script src="javascripts/jquery.cssemoticons.js" type="text/javascript"></script>

и на классе где есть смайлик вызвать $('.comment').emoticonize();

READ ALSO
PHP ошибка 500 после выполнения скрипта

PHP ошибка 500 после выполнения скрипта

Ошибка 500 может возникнуть от нескольких запросов одновременно?

182
ajax button в php

ajax button в php

Пытаюсь вставить ajax кнопку в php вот так:

168
Контроль доступа в Symfony/

Контроль доступа в Symfony/

Здравствуйте

142
Найти, заменить или добавить тег title

Найти, заменить или добавить тег title

У меня есть функция, которая находит и заменяет тег title (можно заменить, можно оставить существующий)

203