文章、留言系统的开发

一个简简单单的文章、留言系统,都不能说是系统,只是一个很简单的功能模块,就是这样都出现了很多问题,虽然都一一解决了。

现在只是初期开发,都还没有后台管理,功能只有前台的留言发布、留言查看。要进一步管理都还要进入数据库的。

废话少说,开始上步骤了:

一)列表的设置和详情页的设计还有发布页的设置,这个就没什么好说的了,都是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() 截取字符串




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