htmlChajian.php 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250
  1. <?php
  2. /**
  3. html相关插件
  4. */
  5. class htmlChajian extends Chajian{
  6. public function replace($cont)
  7. {
  8. if(isempt($cont))return '';
  9. //$cont = str_replace(array('<', '>'), array('&lt;', '&gt;'), $cont);
  10. //$cont = str_replace(array('[B]','[/B]', '[/A]', "\n"), array('<B>','</B>', '</A>','</p><p>'), $cont);
  11. $cont = str_replace(array('[B]','[/B]', '[/A]'), array('<B>','</B>', '</A>'), $cont);
  12. preg_match_all('/\[(.*?)\]/', $cont, $list);
  13. foreach($list[0] as $k=>$nrs){
  14. if($this->rock->contain($nrs, '[A,')){
  15. $url = str_replace('[A,', '', $nrs);
  16. $url = str_replace(']', '', $url);
  17. $cont = str_replace($nrs, '<A href="'.$url.'" target="_blank">', $cont);
  18. }
  19. if($this->rock->contain($nrs, '[IMG,')){
  20. $url = str_replace('[IMG,', '', $nrs);
  21. $url = str_replace(']', '', $url);
  22. $a = explode(',', $url);
  23. $str = '<img src="'.$a[0].'"';
  24. if(isset($a[1]))$str.=' width="'.$a[1].'"';
  25. if(isset($a[2]))$str.=' height="'.$a[2].'"';
  26. $str.='>';
  27. $cont = str_replace($nrs, $str, $cont);
  28. }
  29. }
  30. return $cont;
  31. }
  32. public function createtable($fields, $arr, $title='',$lx='',$bcolor='')
  33. {
  34. if(isempt($bcolor))$bcolor = '#cccccc';
  35. if($lx=='print'){
  36. $bcolor = '#000000';
  37. $title='';
  38. }
  39. $s = '<table border="0" class="createtable" cellspacing="0" cellpadding="0" style="border-collapse:collapse;">';
  40. if($title != ''){
  41. $s .= '<tr><td colspan="2" align="center" style="border:1px '.$bcolor.' solid;padding:10px;font-size:16px;background:#D2E9FF;">'.$title.'</td></tr>';
  42. }
  43. foreach($fields as $fid=>$na){
  44. $val = '';
  45. $sty = 'padding:8px;';
  46. if(isset($arr[$fid]))$val = $arr[$fid];
  47. if(isset($arr[$fid.'_style']))$sty .= $arr[$fid.'_style'];
  48. $s .= '<tr><td align="right" nowrap style="border:1px '.$bcolor.' solid;padding:5px 8px;">'.$na.'</td><td style="border:1px '.$bcolor.' solid;'.$sty.'" align="left">'.$val.'</td></tr>';
  49. }
  50. $s .='</table>';
  51. return $s;
  52. }
  53. /**
  54. * 单据详情默认展示的
  55. */
  56. public function xiangtable($fields, $arr,$bcolor='', $lx='')
  57. {
  58. return $this->createtable($fields, $arr,'',$lx, $bcolor);
  59. }
  60. /**
  61. 创建table表格数据
  62. @param string $rows 下载导出数据
  63. @param string $headstr 表格表头(如:lie1,列1,left@lie2,列2,center)
  64. @return string
  65. */
  66. public function createrows($rows, $headstr='', $bor='#C9ECFF',$lx='')
  67. {
  68. if($headstr == '')$headstr = $this->request('header');
  69. if($headstr == '')return '';
  70. $arrh = explode('@', $headstr);
  71. $thead = count($arrh);
  72. $lens = $thead-1;
  73. $rlen = count($rows);
  74. for($i=0; $i<$thead; $i++){
  75. $te_str = $arrh[$i];
  76. if(count(explode(',', $te_str)) < 3)$te_str.=',center';
  77. $head[] = explode(',', $te_str);
  78. }
  79. $txt = '';
  80. $style = "padding:3px;border:1px ".$bor." solid";
  81. if($lx=='print')$style = "border:.5pt #000000 solid";
  82. $txt .= '<table width="100%" class="createrows" border="0" cellspacing="0" cellpadding="0" align="center" style="border-collapse:collapse;" >';
  83. $txt .= '<tr>';
  84. for($h=0; $h<$thead; $h++){
  85. $stls= $style;
  86. if($lx=='noborder'){
  87. $stls.=';border-top:none';
  88. if($h==0)$stls.=';border-left:none';
  89. if($h==$lens)$stls.=';border-right:none';
  90. }
  91. $txt.= '<td style="'.$stls.'" bgcolor="#eeeeee" align="'.$head[$h][2].'"><b>'.$head[$h][1].'</b></td>';
  92. }
  93. $txt .= '</tr>';
  94. foreach($rows as $k=>$rs){
  95. $txt .= '<tr>';
  96. $rs['xuhaos'] = $k+1;
  97. for($h=0; $h<$thead; $h++){
  98. $stls= $style;
  99. $stls.='';
  100. if($lx=='noborder'){
  101. if($h==0)$stls.=';border-left:none';
  102. if($h==$lens)$stls.=';border-right:none';
  103. if($k==$rlen-1)$stls.=';border-bottom:none';
  104. } else if(substr($lx, 0,6)=='custom') {
  105. $stls.= ';'.substr($lx, 7);
  106. if($h==0)$stls.=';border-left:none';
  107. if($h==$lens)$stls.=';border-right:none';
  108. if($k==$rlen-1)$stls.=';border-bottom:none';
  109. }
  110. $val = isset($rs[$head[$h][0]]) ? $rs[$head[$h][0]] : '';
  111. $txt .= '<td style="'.$stls.'" align="'.$head[$h][2].'">'.$val.'</td>';
  112. }
  113. $txt .= '</tr>';
  114. }
  115. $txt .= '</table>';
  116. return $txt;
  117. }
  118. /**
  119. * 创建excel导出表格
  120. */
  121. public function execltable($title, $headArr, $rows, $lx='')
  122. {
  123. if($lx=='')$lx='xls';
  124. $borst = '.5pt';
  125. $sty = 'style="white-space:nowrap;border:'.$borst.' solid #000000;font-size:12px;"';
  126. $s = '<html><head><meta charset="utf-8"><title>'.$title.'</title></head><body>';
  127. $s .= '<table border="0" style="border-collapse:collapse;">';
  128. $hlen = 1;
  129. $s1='<tr height="30"><td '.$sty.'>序号</td>';
  130. foreach($headArr as $na){
  131. $hlen++;
  132. $s1.='<td '.$sty.'>'.$na.'</td>';
  133. }
  134. $s1.='</tr>';
  135. $s.='<tr height="40"><td '.$sty.' colspan="'.$hlen.'">'.$title.'</td></tr>';
  136. $s.=$s1;
  137. foreach($rows as $k=>$rs){
  138. $atr = '';
  139. if(isset($rs['trbgcolor']))$atr=' bgcolor="'.$rs['trbgcolor'].'"';
  140. $s.='<tr height="26"'.$atr.'>';
  141. $s.='<td align="center" '.$sty.'>'.($k+1).'</td>';
  142. foreach($headArr as $kf=>$na){
  143. $val = '';
  144. if(isset($rs[$kf]))$val=$rs[$kf];
  145. $s.='<td '.$sty.'>'.$this->execelval($val).'</td>';
  146. }
  147. $s.='</tr>';
  148. }
  149. $s.='</table>';
  150. $s.='</body></html>';
  151. $mkdir = ''.UPDIR.'/logs/'.date('Y-m').'';
  152. if(!contain(strtolower(PHP_OS),'win')){
  153. $title = c('pingyin')->get($title, 1);//linux要用拼音,不然会乱码
  154. }
  155. $filename = ''.$title.'_'.date('d_His').'.'.$lx.'';
  156. $filename = str_replace('/','',$filename);
  157. $url = ''.$mkdir.'/'.$filename.'';
  158. $bo = $this->rock->createtxt(iconv('utf-8','gb2312',$url), $s);
  159. return $url;
  160. }
  161. //超过11位的数字就会变型处理
  162. private function execelval($str)
  163. {
  164. if($str!=''){
  165. if(is_numeric($str) && strlen($str)>11)$str=''.$str.'&nbsp;';
  166. }
  167. return $str;
  168. }
  169. public function htmlremove($str)
  170. {
  171. $str = preg_replace("/<[^>]*>/si",'',$str);
  172. $str = str_replace(array(' ',"\n"),'', $str);
  173. return $str;
  174. }
  175. public function substrstr($str, $start, $length=null) {
  176. preg_match_all('/./us', $str, $match);
  177. $chars = is_null($length)? array_slice($match[0], $start ) : array_slice($match[0], $start, $length);
  178. unset($str);
  179. return implode('', $chars);
  180. }
  181. //判断字符串是否包含html代码
  182. public function ishtml($val)
  183. {
  184. $bo = false;
  185. if(isempt($val))return $bo;
  186. $valstr = strtolower($val);
  187. $sparr = explode(',','p,div,span,font,table,b,a');
  188. foreach($sparr as $sp){
  189. if(contain($valstr,'<'.$sp.'')){
  190. $bo=true;
  191. break;
  192. }
  193. }
  194. return $bo;
  195. }
  196. public function importdata($fields,$btfid='', $fid='')
  197. {
  198. if($fid=='')$fid='importcont';
  199. $rows = array();
  200. $val = $this->rock->post($fid);
  201. if($val=='')return $rows;
  202. $arrs = explode("\n", $val);
  203. $farr = explode(',', $fields);
  204. $fars = explode(',', $btfid);
  205. foreach($arrs as $valss){
  206. $dars = explode(' ', $valss);
  207. $barr = array();
  208. foreach($farr as $k=>$fid){
  209. $barr[$fid] = isset($dars[$k]) ? $dars[$k] : '';
  210. $barr[$fid] = str_replace('[XINHUBR]', "\n", $barr[$fid]);
  211. }
  212. $bos = true;
  213. foreach($fars as $fids){
  214. if(isset($barr[$fids]) && isempt($barr[$fids]))$bos = false;
  215. }
  216. if($bos)$rows[] = $barr;
  217. }
  218. return $rows;
  219. }
  220. }