文章、留言系統的開發

一個簡簡單單的文章、留言系統,都不能說是系統,只是一個很簡單的功能模塊,就是這樣都出現了很多問題,雖然都一一解決了。

現在只是初期開發,都還沒有後臺管理,功能只有前臺的留言發佈、留言查看。要進一步管理都還要進入數據庫的。

廢話少說,開始上步驟了:

一)列表的設置和詳情頁的設計還有發佈頁的設置,這個就沒什麼好說的了,都是HTML的知識。

二)添加留言按鈕的放置,我想把它放在一個固定的位置,相對於瀏覽器固定。參考代碼如下:

<!DOCTYPE html> 
<html> 
<head> 
<meta charset="utf-8"> 
<meta name="author" content="http://www.softwhy.com/" /> 
<title>螞蟻部落</title> 
<style type="text/css">
*{padding:0px;margin:0px;}
body, ul, li {background-color:white;font-size:12px;font-family:Arial, Helvetica, sans-serif;text-align:center;}
/* 上面的不知重點*/

#nav {
    width:100%;
    position:fixed;/*固定作用*/
    top:0px;
    
    /*ie6下樣式,加下劃線表示只針對ie6 的hack */
    _position:absolute;/* 把導航欄位置定義爲絕對位置關鍵*/
    _top:expression(documentElement.scrollTop + "px"); /* 把導航欄位置放在瀏覽器垂直滾動條的頂端關鍵 */
    z-index:9999; /* 讓導航欄浮在網頁的高層位置,遇到flash和圖片時候也能始終保持最外層 */
    text-align:left;
} /* 這段代碼是菜單固定*/

.nav_0 {width:987px;margin:0px auto;background-color:#0d87d0;overflow: hidden;} /* 這段代碼是居中用的*/

/* 下面的不是重點*/
a{color:#000000;text-decoration:none;}
.menu{width:120px;height:18px;margin:0px 4px 0px 0px;background-color:#F5F5F5;color:#999999;border:1px solid #EEE8DD;padding:6px 0px 0px 0px;overflow-y:hidden;cursor:hand;display:inline;list-style:none;font-weight:bold;float:left;}
#main{width:20px;height:1000px;margin:0px auto;background-color:#CCC;}
</style>
</head>

<body>
<div id="nav">
    <div class="nav_0">
        <ul>
            <li class="menu"><a href="#">前臺專區</a></li>
            <li class="menu"><a href="#">後臺專區</a></li>
            <li class="menu"><a href="#">交流專區</a></li>
        </ul>
        
    </div>
</div>
<div id="main">大家拖動滾動條下吧 我很長 這樣就能看到導航欄固定的效果了 大家拖動滾動條下吧 我很長 這樣就能看到導航欄固定的效果了 </div>
</body>
</html>

三)我用的是百度編輯器,在編輯器裏面,HTML標籤的處理。哪些要轉換爲實體?哪些不能轉換爲實體。

四)圖片上傳的問題,在百度編輯器裏面,上傳的圖片,保存的地址路徑都是有域名的,我弄了大半天,終於是沒弄好,只能讓它有域名了。如果哪位大神有什麼好的解決方案就跟小弟說說咯。換一個編輯器?

五)縮略圖的抓取,自動提取第一張圖片作爲縮略圖。參考代碼如下,我寫了一個函數:

/*
在文章裏面抓取生成縮略圖
$str 要抓取的文章字符串
$dstW 生成縮略圖的寬度
$dstH 生成縮略圖的高度
$thumb 存儲縮略圖的目錄的父目錄的路徑
*/
function thumbCRE($str, $dstW, $dstH, $thumb) {
    $pregno = preg_match('/<img.+src=\"?(.+\.(jpg|gif|bmp|bnp|png))\"?.+>/i',$str,$match);
    if ($pregno) {
        $file_url = $match[1];
        $fname_fix = substr($file_url, -3, 3);

        if($fname_fix == "jpg" || $fname_fix == "JPG") {
            $src_image = ImageCreateFromJPEG($file_url);    //讀取JPEG文件並創建圖像對象
        }else if ($fname_fix == "png" || $fname_fix == "PNG") {
            $src_image = imagecreatefrompng($file_url);    //讀取png文件並創建圖像對象
        }else {
            $src_image = imagecreatefromgif($file_url);    //讀取gif文件並創建圖像對象
        }

        $srcW = ImageSX($src_image); //獲得圖像的寬
        $srcH = ImageSY($src_image); //獲得圖像的高

        $dst_image = ImageCreateTrueColor($dstW,$dstH); //創建新的圖像對象

        ImageCopyResized($dst_image,$src_image,0,0,0,0,$dstW,$dstH,$srcW,$srcH); //將圖像重定義大小後寫入新的圖像對象

        // 縮略圖URL的準備    
        $_thumbURL = $thumb; // 存入數據庫字符串
        $thumbURL = $_SERVER["DOCUMENT_ROOT"].$_thumbURL; //寫入文件的地址
        if ( strrchr( $thumbURL , "/" ) != "/" ) {
            $thumbURL .= "/";
            $_thumbURL .= "/";
        }
        $thumbURL .= date( "Ymd" );
        $_thumbURL .= date( "Ymd" );
        if ( !file_exists( $thumbURL ) ) {
            if ( !mkdir( $thumbURL , 0777 , true ) ) {
                echo "創建縮略圖子目錄出錯";
                exit();
            }
        }
        $fname = time() . rand( 1 , 10000 ) . ".png";
        $thumbURL .= '/'.$fname;
        $_thumbURL .= '/'.$fname;

        imagepng($dst_image, $thumbURL); //將圖像輸出到文件
        return $_thumbURL;
    } else {
        return "";
    }
}

六)列表的展示,列表裏面展示的內容有文章標題、縮略圖、簡介,如下:


① 先考慮縮略圖,前面說過是自動提取文章裏面的,如果文章裏面沒有的情況呢?所以這就又需要一個默認的圖片了。

② 然後是標題,標題本來是沒有樣式的,也不會很長,所以全部顯示就好了,再調個css樣式就ok了

③ 再就是簡介,這也是提取文章的,文章裏面有圖片,又有樣式,這怎麼提取呀?

看我的第一套方案,如下:

$des = preg_replace('/<\s*img\s+[^>]*?src\s*=\s*(\'|\")(.*?)\\1[^>]*?\/?\s*>/i', '【圖片】', $rows['share_detail']);
用正則把圖片替換成文字,然後

echo mb_substr($des,0,84,'utf-8');

截取字符串,因爲有中文字符 所以用 mb_substr() 截取 記得要指明 utf-8

可是文章是有樣式的,在簡介裏面出現樣式是不好的,這個方案沒有解決這個問題

看下一個方案:

$des = strip_tags($rows['share_detail']); // 丟棄HTML標籤

這個方案直接就丟棄了 HTML 標籤

然後再用 mb_substr() 截取字符串




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章