htmlChajian.php 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245
  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. }
  105. $val = isset($rs[$head[$h][0]]) ? $rs[$head[$h][0]] : '';
  106. $txt .= '<td style="'.$stls.'" align="'.$head[$h][2].'">'.$val.'</td>';
  107. }
  108. $txt .= '</tr>';
  109. }
  110. $txt .= '</table>';
  111. return $txt;
  112. }
  113. /**
  114. * 创建excel导出表格
  115. */
  116. public function execltable($title, $headArr, $rows, $lx='')
  117. {
  118. if($lx=='')$lx='xls';
  119. $borst = '.5pt';
  120. $sty = 'style="white-space:nowrap;border:'.$borst.' solid #000000;font-size:12px;"';
  121. $s = '<html><head><meta charset="utf-8"><title>'.$title.'</title></head><body>';
  122. $s .= '<table border="0" style="border-collapse:collapse;">';
  123. $hlen = 1;
  124. $s1='<tr height="30"><td '.$sty.'>序号</td>';
  125. foreach($headArr as $na){
  126. $hlen++;
  127. $s1.='<td '.$sty.'>'.$na.'</td>';
  128. }
  129. $s1.='</tr>';
  130. $s.='<tr height="40"><td '.$sty.' colspan="'.$hlen.'">'.$title.'</td></tr>';
  131. $s.=$s1;
  132. foreach($rows as $k=>$rs){
  133. $atr = '';
  134. if(isset($rs['trbgcolor']))$atr=' bgcolor="'.$rs['trbgcolor'].'"';
  135. $s.='<tr height="26"'.$atr.'>';
  136. $s.='<td align="center" '.$sty.'>'.($k+1).'</td>';
  137. foreach($headArr as $kf=>$na){
  138. $val = '';
  139. if(isset($rs[$kf]))$val=$rs[$kf];
  140. $s.='<td '.$sty.'>'.$this->execelval($val).'</td>';
  141. }
  142. $s.='</tr>';
  143. }
  144. $s.='</table>';
  145. $s.='</body></html>';
  146. $mkdir = ''.UPDIR.'/logs/'.date('Y-m').'';
  147. if(!contain(strtolower(PHP_OS),'win')){
  148. $title = c('pingyin')->get($title, 1);//linux要用拼音,不然会乱码
  149. }
  150. $filename = ''.$title.'_'.date('d_His').'.'.$lx.'';
  151. $filename = str_replace('/','',$filename);
  152. $url = ''.$mkdir.'/'.$filename.'';
  153. $bo = $this->rock->createtxt(iconv('utf-8','gb2312',$url), $s);
  154. return $url;
  155. }
  156. //超过11位的数字就会变型处理
  157. private function execelval($str)
  158. {
  159. if($str!=''){
  160. if(is_numeric($str) && strlen($str)>11)$str=''.$str.'&nbsp;';
  161. }
  162. return $str;
  163. }
  164. public function htmlremove($str)
  165. {
  166. $str = preg_replace("/<[^>]*>/si",'',$str);
  167. $str = str_replace(array(' ',"\n"),'', $str);
  168. return $str;
  169. }
  170. public function substrstr($str, $start, $length=null) {
  171. preg_match_all('/./us', $str, $match);
  172. $chars = is_null($length)? array_slice($match[0], $start ) : array_slice($match[0], $start, $length);
  173. unset($str);
  174. return implode('', $chars);
  175. }
  176. //判断字符串是否包含html代码
  177. public function ishtml($val)
  178. {
  179. $bo = false;
  180. if(isempt($val))return $bo;
  181. $valstr = strtolower($val);
  182. $sparr = explode(',','p,div,span,font,table,b,a');
  183. foreach($sparr as $sp){
  184. if(contain($valstr,'<'.$sp.'')){
  185. $bo=true;
  186. break;
  187. }
  188. }
  189. return $bo;
  190. }
  191. public function importdata($fields,$btfid='', $fid='')
  192. {
  193. if($fid=='')$fid='importcont';
  194. $rows = array();
  195. $val = $this->rock->post($fid);
  196. if($val=='')return $rows;
  197. $arrs = explode("\n", $val);
  198. $farr = explode(',', $fields);
  199. $fars = explode(',', $btfid);
  200. foreach($arrs as $valss){
  201. $dars = explode(' ', $valss);
  202. $barr = array();
  203. foreach($farr as $k=>$fid){
  204. $barr[$fid] = isset($dars[$k]) ? $dars[$k] : '';
  205. $barr[$fid] = str_replace('[XINHUBR]', "\n", $barr[$fid]);
  206. }
  207. $bos = true;
  208. foreach($fars as $fids){
  209. if(isset($barr[$fids]) && isempt($barr[$fids]))$bos = false;
  210. }
  211. if($bos)$rows[] = $barr;
  212. }
  213. return $rows;
  214. }
  215. }
粤ICP备19079148号