重囗另类BBWSeⅹHD,av狼论坛,精品一卡2卡三卡4卡乱码理论,体育生gv老师浪小辉3p警察

Discuz! 7.0下Wap訪問顯示圖片的研究 -電腦資料

電腦資料 時間:2019-01-01 我要投稿
【www.ipr-jzsc.com - 電腦資料】

    http://www.oldjun.com/blog/index.php/archives/46/

    由于管理自己的論壇,對論壇的一些功能有缺陷的話,會想辦法進行完善,于是有了這篇文章,

Discuz! 7.0下Wap訪問顯示圖片的研究

。玩黑思路很重要,寫程序思路一樣很重要。由于網上對相關Discuz論壇wap顯示圖片的技術文章非常少,而官方遲遲不更新wap版本,所以只能靠自己了。

    官方論壇搜了很久,也查看了別人對于5.5版本與6.0版本的處理方法,經過修改,我得到了相應的Discuz!7.0下wap顯示圖片的方法,利用wapcode這個函數做一些字符串替換,具體代碼如下(修改global.func.php中的wapcode函數即可):

    function wapcode($string) {

    global $lang;

    $string = str_replace(array([attach], [/attach]), array(), $string);

    $string = str_replace(array([img], [/img]), array(), $string);

    $string = preg_replace("/[url=(http://.*?)](.*?)[/url]/is", "\2", $string);

    $string = preg_replace("/[url](.*?)[/url]/is", "\1", $string);

    $string = str_replace(array(&, ", <, >), array(&, ", <, >), $string);

    $string = str_replace(array(<img src1=",<img src2=", " alt="p" />), array(

    ), $string);

    $string = str_replace(array(<a href=", ">,</a>), array(, ), $string);

    $string = preg_replace("/[hide](.+?)[/hide]/is", $lang[post_hide_reply_hidden], $string);

    $string = preg_replace("/[hide=(d+)]s*(.+?)s*[/hide]/ies", $lang[post_hide_reply_hidden], $string);

    for($i = 0; $i < 1; $i++) {

    $string = preg_replace("/[(w+)[^]]*?](.*?)[/\1]/is", "\2", $string);

    }

    return $string;

    }

    測試了下,蠻成功的,圖片能正常顯示,

電腦資料

Discuz! 7.0下Wap訪問顯示圖片的研究》(http://www.ipr-jzsc.com)。一個兩個圖片也沒有發現異常,不過圖片多的時候突然手機里報錯了,仔細看了下代碼才發現:這個方法只改了wapcode($string)函數,但沒有對wapcutstr($string, &$length)方法做相應調整,所以在前后翻頁的時候可能會遇到因img標簽被截斷而導致頁面無法正常顯示,這樣的話不僅是img標簽了,如果不處理wapcutstr想用html標簽都沒可能性,因為字符串截斷的時候不管是不是標簽都當成字符串處理,于是我想改wapcutstr這個函數,網上也找到了相應的修改版,但我沒繼續跟下去,因為后來發現圖文并茂的時候在手機里看起來不爽,于是我有了第二種顯示圖片的思路。

    帖子里的圖片無非兩種:一是遠程圖片,用[img][/img]調用;而是本地圖片,一般情況下可以直接從數據庫中讀取。既然這樣,何必那么麻煩的替換字符串,直接把所有圖片都顯示出來放在帖子的第一頁不就可以了。實現代碼(將如下代碼添加至thread.inc.php中的$post[author] = !$post[anonymous] ? $post[author] : $lang[anonymous];前面):

    if(!$offset || $offset==-1){

    if (preg_match_all("/[img(.*?)](.*?)[/img]/is",$strpost,$imgout,PREG_PATTERN_ORDER)) {

    $imgnum=count($imgout[2]);

    $img="";

    for ($i=0;$i<$imgnum;$i++){

    if($imgout[1][$i] && strpos($imgout[1][$i],",")){

    $imgwidth=explode(",",str_replace("=","",$imgout[1][$i]));

    $newwidth=$imgwidth[0]>100?100:$imgwidth[0];

    }else{

    $newwidth=100;

    }

    $img.=

    ;

    }

    $threadposts .= $img;

    }

    if($post[attachment]) {

    $attquery = $db->query("SELECT * FROM {$tablepre}attachments WHERE pid=$post[pid]");

    while($attach = $db->fetch_array($attquery)) {

    if($attach[isimage]) {

    $attachimg.=

    ;

    }

    }

    $threadposts .= $attachimg;

    }

    }

    至此,完美解決圖片的基本顯示問題,至于圖片大小縮略圖那種問題,沒有繼續深究;另外閱讀權限問題,也沒有考慮(想考慮的話稍微改點代碼就可以了)

最新文章
主站蜘蛛池模板: 凉山| 壤塘县| 廊坊市| 武义县| 普定县| 兰坪| 三河市| 荣成市| 北京市| 北票市| 钟祥市| 黔江区| 札达县| 前郭尔| 顺义区| 内丘县| 手游| 城步| 阳信县| 芮城县| 莎车县| 韶山市| 浦东新区| 友谊县| 平遥县| 邹城市| 肥城市| 读书| 涪陵区| 扎兰屯市| 鄂温| 红安县| 都兰县| 瓦房店市| 信阳市| 灌阳县| 平顺县| 九龙县| 宝鸡市| 绥芬河市| 灵山县|