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