Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 发布时将指定文本转换为图标,但接收时不转换为图标_Php_Jquery_Preg Replace - Fatal编程技术网

Php 发布时将指定文本转换为图标,但接收时不转换为图标

Php 发布时将指定文本转换为图标,但接收时不转换为图标,php,jquery,preg-replace,Php,Jquery,Preg Replace,我试图修改聊天脚本。 这是Eliza Witkowska的链接。我主要尝试将一些文本转换为表情符号。到目前为止,我只能正确地将文本转换为表情符号 但是,只有当我发送消息时,文本才会转换为图标,但当我在另一个浏览器上收到消息时,文本不会转换。我正在使用会话,因此我必须使用另一个浏览器,除非刷新或我从另一个浏览器发送消息 更清楚地说,假设我从chrome和Firefox分别登录了一个a/c和另一个a/c;当我从Chrome发送消息时,指定的字符会转换成图标,但只有这些字符才会显示在firefox上,

我试图修改聊天脚本。 这是Eliza Witkowska的链接。我主要尝试将一些文本转换为表情符号。到目前为止,我只能正确地将文本转换为表情符号

但是,只有当我发送消息时,文本才会转换为图标,但当我在另一个浏览器上收到消息时,文本不会转换。我正在使用会话,因此我必须使用另一个浏览器,除非刷新或我从另一个浏览器发送消息

更清楚地说,假设我从chrome和Firefox分别登录了一个a/c和另一个a/c;当我从Chrome发送消息时,指定的字符会转换成图标,但只有这些字符才会显示在firefox上,直到页面刷新或firefox发送新消息

db.php

function check_changes(){
    $result = $this->db->query('SELECT counting FROM news WHERE id=1');
    if($result = $result->fetch_object()){
        return $result->counting;
    }
    return 0;
}


function get_news(){
    if($result = $this->db->query('SELECT * FROM news WHERE id<>1 ORDER BY add_date DESC LIMIT 50')){
        $return = '';
        while($r = $result->fetch_object()){
            $timing=explode(" ", $r->add_date);

            $return .= $r->title;
            $return .='<p>'.$timing[1].' on '.$timing[0].'</p><hr/> ';
            //$return .= '<hr/>';
        }
        return $return;
    }
}
profile.php

function parseSmiley($text){
    //Smiley to image
    $smileys=array('o:)'=>'angel.gif', ':3'=>'colonthree.gif', 'o.O'=>'confused.gif', ":'("=>'cry.gif', '3:)'=>'devil.gif', ':('=>'frown.gif', ':O'=>'gasp.gif', '8)'=>'glasses.gif', ':D'=>'grin.gif', ">:("=>'grumpy.gif', '<3'=>'heart.gif', '^_^'=>'kiki.gif', ':*'=>'kiss.gif', ':v'=>'pacman.gif', ':)'=>'smile.gif', '-_-'=>'squint.gif', '8|'=>'sunglasses.gif', ':p'=>'tongue.gif', ':/'=>'unsure.gif', '>:O'=>'upset.gif', ';)'=>'wink.gif');

    //Now you need to find and replace
    foreach($smileys as $smiley=>$img){
        $smiley = preg_quote($smiley, '/');
        $text = preg_replace( "#(?<=\s|^)(?:$smiley)((?=\s|$))?#i", '<img src="emotions-fb/'.$img.'">', $text);
    }
    //Now only return it
    return $text;
}

$print= parseSmiley($db->get_news());


<div id="message_short" data-counter="<?php echo (int)$db->check_changes();?>">
<?php echo wordwrap($print, 25, "\n", true);?>
</div>
<div id="message_long" data-counter="<?php echo (int)$db->check_changes();?>">
<?php echo wordwrap($print, 35, "\n", true);?>
</div>
一定要用parseSmiley来包装get_news everywhere


正如我从提供的链接中看到的,有一个checker.php,其中$db->get_news应该被parseSmiley$db->get_news替换为Perfect!成功了。还有一件事,我已经从get_新闻函数中删除了htmlspecialchars。会有问题吗?我应该如何像stackoverflow中的聊天一样获得一个按钮来加载以前的消息?htmlspecialchars确保在某种程度上不能将html或javascript注入其他人的浏览器。这应该被保留,因为它可以防止其他人获得不同用户的cookies。在google中键入htmlspecialchars以查找有关该主题的更多信息。关于按钮,请先自己尝试。。。我可以帮你,但我没有时间帮你;好的。我自己试试看,但如果你能给我一些关于如何进行的提示的话您应该创建一个函数,该函数能够加载一定数量的项目,并带有与数据库的偏移量。偏移量应该是根据您的需要显示的第一个或最后一个新闻项的id。该数量是一次运行中要加载的新闻项的最大数量。您还需要一个新的ajax调用来使用此函数并将其绑定到一个新的单击事件。