htmlChajian.php 7.4 KB

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