作者:nameless
分离:haohao036
- [tbl][b]标题一[/b],[b]标题二[/b],[b]标题三[/b],[b]标题四[/b]
- 第一列,第二列,第三列,第四列
- 第一列,第二列,第三列,[color=orangered]*[/color]
- [entity=center]爱国,守法
- 自律,真实,文明[/entity],[entity=left]
- 1:自觉遵守:爱国、守法、自律、真实、文明的原则
- 2:《互联网站电子公告服务倡议书》 [url]http://tech.sina.com.cn/i/c/2002-02-09/102936.shtml[/url]
- 3:尊重网上道德,遵守《全国人大常委会关于维护互联网安全的决定》[url]http://tech.sina.com.cn/i/c/65606.shtml[/url]及中华人民共和国其他各项有关法律法规
- 4:严禁发表危害国家安全、破坏民族团结、破坏国家宗教政策、破坏社会稳定、侮辱、诽谤、教唆、淫秽等内容的作品
- 5:承担一切因您的行为而直接或间接导致的民事或刑事法律责任
- 6:神话传奇论坛各栏目的版主有权保留或删除其管辖论坛中的任意内容
- 7:您在神话传奇论坛发表的作品,神话传奇论坛有权在网站内免费转载或引用
- 8:提交者发言纯属个人意见,与本网站立场无关
- 9:《全国青少年网络文明公约》
- 全国青少年网络文明公约
- [/entity]
- 第一列,第二列,第三列,
- 第一列,第二列,第三列
- 第一列,第二列,,第四列[/tbl]
复制代码
原插件地址: http://www.freediscuz.net/dev/viewthread.php?tid=12268&extra=page%3D1
带自定义表格标签,实体标签,支持背景色,限制了表格最多可有的列数为20,防止用户恶意使用,行中超过20个界定符的将被视为一行,不进行列划分,多标签支持(不推荐使用,已经很慢了),实体部分不分列
修改discuzcode.func.php
查找:最下面的
上面加入
- //06-01-12-tbl-begin
- function parse_tbl($message,$tag='',$entity=''){
- $tag = $tag ? $tag : 'tbl';
- $entity = $entity ? $entity : 'entity';
- @preg_match_all("/\[".$tag."=?[a-f\d\#]*?\](.*?)\[\/".$tag."\]/is",$message,$matches);
- if(is_array($matches[1])){
- $i=0;
- $cmatchs = array();
- foreach($matches[1] as $key => $val){
- @preg_match_all("/(\[".$entity."(=left|=center|=right)?\].*?\[\/".$entity."\])/is",$val,$cmatch);
- if(is_array($cmatch[0])){
- foreach($cmatch[0] as $ckey => $cval){
- $val = str_replace($cval,"[".$entity."=$i]mark[/".$entity."]",$val);
- $len=0;
- $len2=0;
- $align=NULL;
- if($cmatch[2][$ckey]){
- $align = substr($cmatch[2][$ckey],1);
- $len = strlen($align)+1;
- }
- $len += strlen($entity)+2;
- $len2 += $len+strlen($entity)+3;
- $align = strstr(',left,right,center,',','.$align.',') ? $align : 'center';
- $cmatchs[$i] = '<div align="'.$align.'">'.trim(substr($cval,$len,strlen($cval)-$len2)).'</div>';
- $i++;
- }
- }
- @$temp = explode("\n",$val);
- $max = 0;
- if(is_array($temp)){
- foreach($temp as $tkey => $tval){
- if(!trim($tval)){
- unset($temp[$tkey]);
- continue;
- }
- if (substr_count($tval,',')<=20){
- @$temp2 = explode(",",$tval);
- } else {
- $temp2 = array($tval);
- }
- $max = (count($temp2) > $max) ? count($temp2) : $max;
- }
- }
- $tt = NULL;
- if(is_array($temp)){
- foreach($temp as $tkey => $tval){
- $ii=0;
- if (substr_count($tval,',')<=20){
- @$t = explode(',',$tval);
- } else {
- $t = array($tval);
- }
- $tc = count($t);
- $diff = $max - $tc;
- $diff = $diff ? $diff+1 : 0;
- $tt .= '<tr>';
- if(is_array($t)){
- foreach($t as $ttkey => $ttval){
- $ii++;
- if($ii==$tc && $diff){
- $tt .= '<td colspan="'.$diff.'">'.$ttval.'</td>';
- }else{
- $tt .= '<td>'.$ttval.'</td>';
- }
- }
- }
- $tt .= '</tr>';
- }
- }
- $temp3 = $matches[0][$key];
- $tbinfo = substr($temp3,0,strpos($temp3,']'));
- $color = NULL;
- if($pos = strpos($tbinfo,'=')){
- $pos++;
- $color = trim(substr($tbinfo,$pos));
- }
- $color = $color ? $color : '#eeeecc';
- $tt = '<table align="center" border="1" class="innertable" cellSpacing="0" cellPadding="4" style="background-color:'.$color.';" >'.$tt.'</table>';
- @$replacement = str_replace(array("\n","\r"),'',$tt);
- @$message = str_replace($temp3,$replacement,$message);
- }
- }
- if(is_array($cmatchs)){
- $pattern = $replacement = array();
- foreach($cmatchs as $key => $val){
- $pattern[] = "[".$entity."=$key]mark[/".$entity."]";
- $replacement[] = $val;
- }
- $message = str_replace($pattern,$replacement,$message);
- }
- unset($matches,$match,$temp,$temp2,$diff,$tc,$t,$tt,$replacement,$temp3,$cmatchs,$pattern);
- return $message;
- }
- //06-01-12-tbl-end
复制代码
继续查找:
- if(!$bbcodeoff && $allowimgcode) {
复制代码
下面添加
- if(strstr($message,'[/tbl]')){
- $message = parse_tbl($message);
- }
复制代码
修改 templates/default/css.htm
查找:
上面加上
- .innertable {cursor:default;width:90%;background-color:#ffffff; border-collapse:collapse; border-Color:#999999; text-align:center;}
- .innertable td {border-color:#ffffff}
复制代码
本地测试OK
[ 本帖最后由 haohao036 于 2006-5-31 12:16 编辑 ] |