10款基于PHP的免费CMS,想要通过PHP+MYSQL搭建网站的朋友可以从中参考。
1. Joomla!
Joomla! 的前身是Mambo的开源码计划,
2. Drupal
直逼Joomla!的开源CMS,不过貌似用户群还是没有Joomla!多。
3. Mambo
企业类CMS网站可以选择,个人还是用Joomla 好了。
4. DEDECMS
这算国内最知名、使用人数最多的CMS了吧。无数垃圾站就是由它制造出来的,当然,它也制造出了很多优秀的站长。
5. phpcms
没太用过,按BBon的说法,据传被酷6收购。如果真是这样,那完全可以不要选择了。
6. 帝国CMS
个人没用过这个。不过在国内也算比较知名的了,同样是垃圾站的一个不错选择。
7. php168
这个也没用过。
8. HBcms
这个更没用过。
9. SupeSite
从理论上来说,这是一个最佳的选择,比DEDECMS还值得选,毕竟康盛拥有一系列站长需要的源程序,以后的新增、整合、转换起来都比较方便。
10. WordPress
谈到CMS,WordPress是唯一一款身为博客软件却总能列入CMS建站行列的程序。没办法,它的使用者太多了,它也确实够强大。
在国内,大部分来说,CMS基本就等同于垃圾站。其实选择哪个程序并不重要,重要的是选择一个自己容易上手的,然后着重去回收垃圾。 ......
刚换了一个工作,现在没什么事做,写了一个数据缓存的类。
可以缓存数组,字符,对象等,执行效率还没有测试,先放出来吧。
实例如下:
* @example
* require 'MyCache.class.php';
* $mc = new MyCache("./test/cache");
* $a = "hello world111";
* $mc->set("ss", $a);
* $mc->set("dd", $mc);
* $mc->set("2s", $a);
* echo $mc->get("ss");
* $mc->delete("2s");
* $mc->edit("ss", "hello");
* echo $mc->get_type("dd");
* echo "<pre>";
* print_r($c);
<?php
/**
* 自用的php 缓存类
* 功能,将变量,数组 写入 文件
* 文件名即为缓存变量名
* @example
* require 'MyCache.class.php';
* $mc = new MyCache("./test/cache");
* $a = "hello world111";
* $mc->set("ss", $a);
* $mc->set("dd", $mc);
* $mc->set("2s", $a);
* echo $mc->get("ss");
* echo $mc->get_type("dd");
* $c = $mc->get_all();
* echo "<pre>";
* print_r($c);
* @author: bruce wang ......
$doc = new DOMDocument('1.0', 'UTF-8');
$doc->formatOutput = true;
$root = $doc->createElement('document'); //创建根
$doc->appendChild($root); //加入根
//webSite
$webSite = $doc->createElement('webSite');
$webSite->appendchild($doc->createTextNode('wanjike.com'));
$root->appendChild($webSite);
//webMaster
$webMaster = $doc->createElement('webMaster');
$webMaster->appendChild($doc->createTextNode('admin@wanjike.com'));
$root->appendChild($webMaster);
//updatePeri
$updatePeri = $doc->createElement('updatePeri');
$updatePeri->appendChild($doc->createTextNode('120'));
$root->appendChild($updatePeri);
header("Content-Type: text/xml"); //显示成xml形式
echo $doc->saveXML();
header("Content-type:text/xml;charset=utf-8");
echo "<?xml version=\"1.0\" encoding=\"utf- ......
有这么一段HTML,比较不规则的,如果要提取其中的链接地址和链接名称,怎么弄? 内容来自dedecms
//HTML
$str = '<a id="top8" href="http://list.mp3.baidu.com/song/A.htm?top8" class="p14" target="_top">歌曲列表</a><br><a target="_blank" id="bp" href="http://list.mp3.baidu.com/list/bangping.html" class="p14">中文金曲榜</a><br><td nowrap="nowrap">• <a id="top19" href="qingyinyue.html?top19" class="p14" target="_top">轻音乐</a></td>'; copyright dedecms
利用正则表达式是最简单的,其它的办法,偶米去想。。。
内容来自dedecms
$pat = '/<a(.*?)href="(.*?)"(.*?)>(.*?)<\/a>/i';
preg_match_all($pat, $str, $m);
织梦内容管理系统
输出方法: dedecms.com
print_r($m[2]);
print_r($m[4]); 织梦内容管理系统
或者:
for($i=0;$i<count($m[2]) ;$i++ ){
echo '<li><a href="'.$_SERVER['PHP_SELF'].'?url='.$m[2][$i].'">'.$m[4][$i].'</a>';
}
内容来自dedecms
显示结果是:
本文 ......
匹配中文字符的正则表达式: [\u4e00-\u9fa5]
评注:匹配中文还真是个头疼的事,有了这个表达式就好办了
匹配双字节字符(包括汉字在内):[^\x00-\xff]
评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)
匹配空白行的正则表达式:\n\s*\r
评注:可以用来删除空白行
匹配HTML标记的正则表达式:<(\S*?)[^>]*>.*?</\1>|<.*? />
评注:网上流传的版本太糟糕,上面这个也仅仅能匹配部分,对于复杂的嵌套标记依旧无能为力
匹配首尾空白字符的正则表达式:^\s*|\s*$
评注:可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式
匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
评注:表单验证时很实用
匹配网址URL的正则表达式:[a-zA-z]+://[^\s]*
评注:网上流传的版本功能很有限,上面这个基本可以满足需求
匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
评注:表单验证时很实用
匹配国内电话号码:\d{3}-\d{8}|\d{4}-\d{7}
评注:匹配形式如 0511-4405222 或 021-87888822
匹配腾讯QQ号:[1-9][0-9]{4,}
......
<?php
/**
* @author qqzer.com
* @copyright 2010
*/
function baidu_decode($url,$sertim='',$k=array())
{
$E=strlen($url);
$C="";
$I=array();
$F=array();
$J=$sertim % 26;
$J=$J?$J:1;
foreach((array)$k as $str){
list($O,$L,$M) = explode(',',$str);
for($N=$O;$N<=$L;$N++){
$I[$N]=$N+$M;
$F[$N+$M]=$N;
}
}
for($D=0;$D<$E;$D++){
$A=$url{$D};
if(preg_match('/[A-Za-z0-9]/',$A)){
$H=$F[ord(substr($url,$D))]-$J;
if($H<0){
$H+=62;
}
$A = fromCharCode($I[$H]);
}
$C .=$A;
}
return $C;
}
function fromCharCode($codes) {
if (is_scalar($codes)) $codes= func_get_args();
$str= '';
foreach ($codes as $code) $str.= chr($code);
return $str;
}
echo baidu_decode('w884://2tB7.wp2vEw39.r31.r2/7x8tH/HFFOFNHN/FFGtrOJtKGKuFrFGLKNHFI.14I',1268169359,array('0,9,48','10,35,55','36,61,61'));
?>
......