www.gusucode.com > OpenSNS PHP开源社区交友系统 v2.8.1源码程序 > os/Application/Common/Common/ext_parse.php

    <?php
function parse_at_users($content, $disabel_hight = false)
{
    $content = $content . ' ';
    //找出被AT的用户
    $at_users = get_at_usersnickname($content);

    //将@用户替换成链接
    foreach ($at_users as $e) {
        $user = D('Member')->where(array('nickname' => $e))->find();
        if ($user) {
            $query_user = query_user(array('space_url', 'avatar32', 'nickname'), $user['uid']);
            if (modC('HIGH_LIGHT_AT', 1, 'Weibo') && !$disabel_hight) {
                $content = str_replace("@[$e]", " <a class='user-at hl ' ucard=\"$user[uid]\" href=\"$query_user[space_url]\"><img src=\"$query_user[avatar32]\">@$query_user[nickname] </a> ", $content);
            } else {
                $content = str_replace("@[$e]", " <a ucard=\"$user[uid]\" href=\"$query_user[space_url]\">@$query_user[nickname] </a> ", $content);
            }

        }
    }

    //返回替换的文本
    return $content;
}

//找出被AT的用户
function parse_at_app_users($content, $disabel_hight = false)
{
    $content = $content . ' ';
    //找出被AT的用户
    $at_users = get_at_usersnickname($content);

    //将@用户替换成链接
    foreach ($at_users as $e) {
        $user = D('Member')->where(array('nickname' => $e))->find();
        if ($user) {
            $query_user = query_user(array('avatar32', 'nickname'), $user['uid']);
            if (modC('HIGH_LIGHT_AT', 1, 'Weibo') && !$disabel_hight) {
                $content = str_replace("@[$e]", " <a class='user-at' data-user-id=\"$user[uid]\">@$query_user[nickname] </a> ", $content);
            } else {
                $content = str_replace("@[$e]", " <a data-user-id=\"$user[uid]\">@$query_user[nickname] </a> ", $content);
            }
        }
    }
    //返回替换的文本
    return $content;
}
/**
 * get_at_usernames  获取@用户的用户名
 * @param $content
 * @return array
 * @author:xjw129xjt(肖骏涛) xjt@ourstu.com
 */
function get_at_users($content)
{
    //正则表达式匹配
    $user_pattern = '/\[at:(\d*)\]/';
    preg_match_all($user_pattern, $content, $users);

    //返回用户名列表

    return array_unique($users[1]);
}
/*
 * 获取@用户昵称
 * fanjiawei
 */
function get_at_usersnickname($content)
{
    //正则表达式匹配   /\@\[([a-zA-Z]+|[0-9]+|[\x{4e00}-\x{9fa5}]+)\]/u
    //('/^(?!_|\s\')[A-Za-z0-9_\x80-\xff\s\']+$/',$name);
    //$user_pattern= '/\@\[[A-Za-z0-9_\x{4e00}-\x{9fa5}\x80-\xff]+\]/';
    $user_pattern= '/\@\[[A-Za-z0-9_\x{4e00}-\x{9fa5}\x80-\xff]+\]/u';
    preg_match_all($user_pattern, $content, $users);
   $k=0;
    $nickname=array();
   foreach($users[$k] as $v){
       $nickname[]=substr($v,2,strlen($v)-3);
       $k++;
   }
    //dump($nickname);
    return array_unique($nickname);
}

function get_at_app_users($content)
{
    //正则表达式匹配
    $user_pattern = '/@(\S+)\s/';
    preg_match_all($user_pattern, $content, $users);
//foreach($users as$k=>$c){
//    $users[$k]=M('Member')->where(array('nickname'=>$c[$k]))->find();
//}
    //返回用户名列表

    return array_unique($users[1]);
}

/**
 * get_at_uids  获取@的用户的uid
 * @param $content
 * @return array
 * @author:xjw129xjt(肖骏涛) xjt@ourstu.com
 */
function get_at_uids($content)
{
    $uids = get_at_users($content);
    return $uids;
}

function parse_comment_content($content)
{
    //就目前而言,评论内容和微博的格式是一样的。
    return parse_weibo_content($content);
}

function parse_comment_mob_content($content)
{
    //就目前而言,评论内容和微博的格式是一样的。
    return parse_weibo_mob_content($content);
}

function parse_weibo_content($content)
{
    $content = shorten_white_space($content);

    if (modC('WEIBO_BR', 0, 'Weibo')) {
        $content = str_replace('/br', '<br/>', $content);
        $content = str_replace('/nb', ' ', $content);

    } else {
        $content=str_replace('/br','',$content);
        $content=str_replace('/nb','',$content);
    }
    $content = parse_url_link($content);
    $content = parse_expression($content);
    $content = parseWeiboContent($content);
    return $content;
}
function parse_weibo_mob_content($content)
{
    if (modC('WEIBO_BR', 0, 'Weibo')) {
        $content = str_replace('/br', '<br/>', $content);
        $content = str_replace('/nb', '', $content);
    } else {
        $content=str_replace('/br','',$content);
        $content=str_replace('/nb','',$content);
    }
    $content = shorten_white_space($content);
    $content = op_t($content,false);
    $content = parse_url_link($content);
    $content = parseWeiboContent($content);
    return $content;
}

function shorten_white_space($content)
{
    $content = preg_replace('/\s+/', '', $content);
    return $content;
}

function parse_url_link($content)
{
    $content = preg_replace("#((http|https|ftp)://(\S*?\.\S*?))(\s|\;|\)|\]|\[|\{|\}|,|\"|'|:|\<|$|\.\s)#ie",
        "'<a class=\"label label-badge\" href=\"$1\" target=\"_blank\"><i class=\"icon-link\" title=\"$1\"></i></a>$4'", $content
    );
    return $content;
}

function parseWeiboContent($content)
{
    hook('parseWeiboContent', array('content' => &$content));
    hook('parseContent',array('content'=>&$content));
    return $content;
}


function parse_content($content)
{
    return $content;
}