function.inc.php <?php /************************************* * 这个文件中定义常用的公共的函数 *************************************/ /** * Get User IP Address * * @return String $userip */ function getUserIP() { static $realip; if (isset($_SERVER)){ if (isset($_SERVER["HTTP_X_FORWARDED_FOR"])){ $realip = $_SERVER["HTTP_X_FORWARDED_FOR"]; } else if (isset($_SERVER["HTTP_CLIENT_IP"])) { $realip = $_SERVER["HTTP_CLIENT_IP"]; } else { $realip = $_SERVER["REMOTE_ADDR"]; } } else { if (getenv("HTTP_X_FORWARDED_FOR")){ $realip = getenv("HTTP_X_FORWARDED_FOR"); } else if (getenv("HTTP_CLIENT_IP")) { $realip = getenv("HTTP_CLIENT_IP"); } else { $realip = getenv("REMOTE_ADDR"); } } return $realip; } /** * Convert PHP scalar, array or hash to JS scalar/array/hash. * * @param Array $a * @return javascript format array */ function php2js($a) { if (is_null($a)) return 'null'; if ($a === false) return 'false'; if ($a === true) return 'true'; if (is_scalar($a)) { $a = addslashes($a); $a = str_replace("/n", '/n', $a); $a = str_replace("/r", '/r', $a); $a = preg_replace('{(</)(script)}i', "$1'+'$2", $a); return "'$a'"; } $isList = true; for ($i=0, reset($a); $i<count($a); $i++, next($a)) if (key($a) !== $i) { $isList = false; break; } $result = array(); if ($isList) { foreach ($a as $v) $result[] = php2js($v); return '[ ' . join(', ', $result) . ' ]'; } else { foreach ($a as $k=>$v) $result[] = php2js($k) . ': ' . php2js($v); return '{ ' . join(', ', $result) . ' }'; } } /** * 功能:解析Url地址,把Page参数去掉组合成一个地址 * 返回:翻页地址 */ function ParseUrl() { $url = $_SERVER['REQUEST_URI']; //提取当前地址 if(strpos($url, '?')) { //判断是否有携带参数 $file = substr($url, 0,strpos($url, '?')); //取得文件地址 $para = substr($url,strpos($url,'?')+1,strlen($url)); //取得参数字符串 $array = explode('&',$para); //分解参数 for($i=0;$i<sizeof($array);$i++){ //循环组合参数 $tmp = array(); $tmp = explode("=",$array[$i]); //分解参数名和值 if($tmp[0] != 'Page'){ //判断参数是否为Page //不是则组合参数 if($i != 0) //判断是否为第一个参数,不是则加’&’ $link .= "&"; $link .= $array[$i]; } } $link = $file . "?" . $link . "&"; //组合成翻页连接地址 } else { $link = $url . "?"; } return $link; } /** * 功能:输出翻页字符串 * 参数:$pagecount 总页数,$curr_page 当前页码,$pagesize 每页文章数 * 返回:翻页字符串 */ function Page($pagecount,$curr_page,$pagesize) { $url = ParseUrl(); $prev = $curr_page - 1; $next = $curr_page + 1; $start = "<a href="" . $url . "Page=1" mce_href="" . $url . "Page=1">首页</a>"; $prev_link = ($prev >= 1) ? "<a href="" . $url . "Page=$prev" mce_href="" . $url . "Page=$prev">上一页</a>" : "上一页"; $next_link = ($next <= $pagecount) ? "<a href="" . $url . "Page=$next" mce_href="" . $url . "Page=$next">下一页</a>" : "下一页"; $end = "<a href="" . $url ."Page=$pagecount" mce_href="" . $url ."Page=$pagecount">尾页</a>"; $str = "当前第" . $curr_page . "页 共" . $pagecount . "页 每页" . $pagesize; $str .= " " . $start . " " . $prev_link . " " . $next_link . " " . $end; return $str; } // Build HTML <option> tags function buildOptions($options, $selectedOption = "") { foreach ($options as $value => $text) { if ($value == $selectedOption) { echo '<option value="' . $value . '" selected="selected">' . $text . '</option>'; } else { echo '<option value="' . $value . '">' . $text . '</option>'; } } } /** * 截取字符串 * @param 源字符串 $string * @param 截取长度 $length * @param 省略号 $dot * @return unknown */ function cutText($string, $length, $dot = ' ...') { global $charset; if(strlen($string) <= $length) { return $string; } $string = str_replace(array('&', '"', '<', '>'), array('&', '"', '<', '>'), $string); $strcut = ''; if(strtolower($charset) == 'utf-8') { $n = $tn = $noc = 0; while($n < strlen($string)) { $t = ord($string[$n]); if($t == 9 || $t == 10 || (32 <= $t && $t <= 126)) { $tn = 1; $n++; $noc++; } elseif(194 <= $t && $t <= 223) { $tn = 2; $n += 2; $noc += 2; } elseif(224 <= $t && $t < 239) { $tn = 3; $n += 3; $noc += 2; } elseif(240 <= $t && $t <= 247) { $tn = 4; $n += 4; $noc += 2; } elseif(248 <= $t && $t <= 251) { $tn = 5; $n += 5; $noc += 2; } elseif($t == 252 || $t == 253) { $tn = 6; $n += 6; $noc += 2; } else { $n++; } if($noc >= $length) { break; } } if($noc > $length) { $n -= $tn; } $strcut = substr($string, 0, $n); } else { for($i = 0; $i < $length; $i++) { $strcut .= ord($string[$i]) > 127 ? $string[$i].$string[++$i] : $string[$i]; } } $strcut = str_replace(array('&', '"', '<', '>'), array('&', '"', '<', '>'), $strcut); return $strcut.$dot; } /** * 处理直接从MySQL中读出的文本字段 * * @param text $textContent * @return text */ function dealText($textContent){ $textContent = str_replace("[quote]","<div class=/"quote/">",$textContent); $textContent = str_replace("[/quote]","</div>",$textContent); $textContent = str_replace("/n","<br>", $textContent); // urls $textContent = preg_replace("/(/[url/])(.*?)(/[//url/])/s","<a href="/" mce_href="/""//2/">//2</a>",$textContent); $textContent = preg_replace("//[url=(.*?)/](.*?)/[//url/]/s","<a href="/" mce_href="/""//1/">//2</a>",$textContent); // bold $textContent = preg_replace("/(/[b/])(.*?)(/[//b/])/s","<strong>//2</strong>",$textContent); // underline $textContent = preg_replace("/(/[u/])(.*?)(/[//u/])/s","<u>//2</u>",$textContent); // italic $textContent = preg_replace("/(/[i/])(.*?)(/[//i/])/s","<em>//2</em>",$textContent); return $textContent; } ?>