好玩的php函数,几个实用的PHP函数

* 获取 post 或者 get 的值

* @param string $k

* @param string $default 默认返回值

* @return Ambigous NULL, unknown

*/

function v($k, $defalut = ”) {

return isset($_REQUEST[$k]) ? $_REQUEST[$k] : $defalut;

}

/**

* 获取 get 的值

* @param string $k

* @param string $default 默认返回值

* @return Ambigous NULL, unknown

*/

function get($k, $defalut = ”) {

return isset($_GET[$k]) ? $_GET[$k] : $defalut;

}

/**

* 获取 post 的值

* @param string $k

* @param string $default 默认返回值

* @return Ambigous NULL, unknown

*/

function post($k, $defalut = ”) {

return isset($_POST[$k]) ? $_POST[$k] : $defalut;

}

/**

* 模拟简单的 post 请求

* @param  string $url

* @param  string $data 类型和 QUERY_STRING 相同,即由 & 连接的字符串 a=1&b=2

* @param  array  $header header数组

* @return all    返回服务器返回的结果

*/

function post_data($url, $data = array(), $header = array()) {

$ch = curl_init($url);

ob_start();

curl_setopt($ch, CURLOPT_POST, 1);

curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

curl_setopt($ch, CURLOPT_HTTPHEADER, $header);

curl_exec($ch);

$output = ob_get_contents();

ob_clean();

curl_close($ch);

return $output;

}

/**

* 将未知编码的字符串转换为期望的编码(配置文件中设置的编码)

*

* 不建议使用,尽量统一编码,明确要转码的字符原来的编码

* @deprecated

* @param string $str

* @param string $toEncoding

* @return string

*/

function convert_str($str, $toEncoding = null) {

//加此字符集列表数组,解决误将 改变 2312 识别为 utf-8 的情况

$charset_list = array(

‘ascii’,

‘gb2312′,

‘gbk’,

‘utf-8′

);

$strEncoding  = mb_detect_encoding($str, $charset_list);

//如果没有提供要转码的类型,使用系统设置的编码

if (!$toEncoding)

$toEncoding = CHARSET;

if (strtolower($strEncoding) != strtolower($toEncoding)) {

$str = iconv($strEncoding, $toEncoding, $str);

}

return $str;

}

/**

* 查看字符长度

* @param unknown_type $str

*/

function real_strlen($str) {

$charset = mb_detect_encoding($str);

return mb_strlen($str, $charset);

}

/**

* 获得服务器端网址,即获取当前网址

* @param boolean $with_query_string 是否附带 query_string 部分

* @return Ambigous string, unknown

*/

function get_server_url($with_query_string = true) {

$url = ‘http://localhost’;

if (isset($_SERVER['HTTP_HOST'])) {

$url = isset($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) !== ‘off’ ? ‘https’ : ‘http’;

$url .= ‘://’ . $_SERVER['HTTP_HOST'];

if ($with_query_string) {

$url .= $_SERVER['REQUEST_URI'];

} else {

$url .= $_SERVER['SCRIPT_NAME'];

}

}

return $url;

}

/**

* 获取网址跟目录

* @return string

*/

function get_server_root() {

$url = ‘http://localhost’;

if (isset($_SERVER['HTTP_HOST'])) {

$url = isset($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) !== ‘off’ ? ‘https’ : ‘http’;

$url .= ‘://’ . $_SERVER['HTTP_HOST'];

$url .= dirname($_SERVER['SCRIPT_NAME']);

}

$url = rtrim($url, ‘/’) . ‘/’;

return $url;

}

/**

* 获取客户端 IP

*/

function get_ip() {

if (isset($_SERVER["HTTP_X_REAL_IP"])) {

$ip = $_SERVER["HTTP_X_REAL_IP"];

} else if (isset($_SERVER["HTTP_CLIENT_IP"])) {

$ip = $_SERVER["HTTP_CLIENT_IP"];

} else if (isset($_SERVER["REMOTE_ADDR"])) {

$ip = $_SERVER["REMOTE_ADDR"];

} else {

$ip = “0.0.0.0″;

}

return $ip;

}

/**

* 判断 ip 是否合法(仅限于IPV4)

* @param unknown_type $ip

*/

function is_valid_ip($ip) {

$preg       = ‘/^(\d|\d{2}|1\d{2}|2[0-4]\d|25[0-5])\.(\d|\d{2}|1\d{2}|2[0-4]\d|25[0-5])\.(\d|\d{2}|1\d{2}|2[0-4]\d|25[0-5])\.(\d|\d{2}|1\d{2}|2[0-4]\d|25[0-5])$/’;

$is_matched = false;

if (preg_match($preg, $ip, $m)) {

$is_matched = true;

}

return $is_matched;

}

/**

* json 编码

*

* 解决 json_encode() 不支持中文的情况

*

* @param array|object $data

* @return array|object

*/

function ch_json_encode($data) {

/**

* 将中文编码

* @param array $data

* @return string

*/

function ch_urlencode($data) {

if (is_array($data) || is_object($data)) {

foreach ($data as $k = $v) {

if (is_scalar($v)) {

if (is_array($data)) {

$data[$k] = urlencode($v);

} else if (is_object($data)) {

$data-$k = urlencode($v);

}

} else if (is_array($data)) {

$data[$k] = ch_urlencode($v); //递归调用该函数

} else if (is_object($data)) {

$data-$k = ch_urlencode($v);

}

}

}

return $data;

}

$ret = ch_urlencode($data);

$ret = json_encode($ret);

return urldecode($ret);

}

/**

* 转义特殊字符

*

* 书写mysql语句时的可先对变量进行过滤

* 此函数会自动对字符串加引号

* @param unknown_type $value

* @return string

*/

function check_input($value) {

if (get_magic_quotes_gpc()) {

$value = stripslashes($value);

}

if (!is_numeric($value)) {

$value = “‘” . wphp_escape($value) . “‘”;

}

return $value;

}

/**

* 转义函数,用来替代 mysql*_escape_* 函数

* @param unknown_type $str

*/

function wphp_escape($str) {

$search  = array(

“\\“,

“\0“,

“\n“,

“\r“,

“\x1a“,

“‘”,

‘”‘

);

$replace = array(

“\\\\“,

“\\0″,

“\\n”,

“\\r”,

“\Z”,

“\’”,

‘\”‘

);

return str_replace($search, $replace, $str);

}

/**

* Ip 地址转为数字地址

*

* php 的 ip2long 这个函数有问题

* 133.205.0.0 == 2244804608

* @param string $ip 要转换的 ip 地址

* @return int    转换完成的数字

*/

function wphp_ip2long($ip) {

$ip_arr = explode(‘.’, $ip);

$iplong = (16777216 * intval($ip_arr[0])) + (65536 * intval($ip_arr[1])) + (256 * intval($ip_arr[2])) + intval($ip_arr[3]);

return $iplong;

}

/**

* 对字符串、对象、数组进行转码

*

* 和 iconv 参数使用方式相同

* @param string $in_charset

* @param string $out_charset

* @param array|string $data

* @return string|array

*/

function wphp_iconv($in_charset, $out_charset, $data) {

if (is_array($data) || is_object($data)) {

foreach ($data as $k = $v) {

if (is_scalar($v)) {

if (is_array($data)) {

$data[$k] = iconv($in_charset, $out_charset, $v);

} else if (is_object($data)) {

$data-$k = iconv($in_charset, $out_charset, $v);

}

} else if (is_array($data)) {

$data[$k] = wphp_iconv($in_charset, $out_charset, $v);

} else if (is_object($data)) {

$data-$k = wphp_iconv($in_charset, $out_charset, $v);

}

}

} else if (is_scalar($data)) {

$data = iconv($in_charset, $out_charset, $data);

}

return $data;

}

---------------------------------------------------------------------------------

  Smarty是一个使用PHP写出来的模板PHP模板引擎,是目前业界最著名的PHP模板引擎之一。它分离了逻辑代码和外在的内容,提供了一种易于管理和使用的方法,用来将原本与HTML代码混杂在一起PHP代码逻辑分离。简单的讲,目的就是要使PHP程序员同前端人员分离,使程序员改变程序的逻辑内容不会影响到前端人员的页面设计,前端人员重新修改页面不会影响到程序的程序逻辑,这在多人合作的项目中显的尤为重要。   Smarty 3.1.9 更新日志:   - 修正提取()和显示()与相对路径(104期)   - 修正错误的治疗“0000-00-00”0作为在modifier.date_format的(第103)   Smarty优点:   1.速度:采用Smarty编写的程序可以获得最大速度的提高,这一点是相对于其它的模板引擎技术而言的。   2.编译型:采用Smarty编写的程序在运行时要编译成一个非模板技术的PHP文件,这个文件采用了PHP与HTML混合的方式,在下一次访问模板时将WEB请求直接转换到这个文件中,而不再进行模板重新编译(在源程序没有改动的情况下)   3.缓存技术:Smarty选用的一种缓存技术,它可以将用户最终看到的HTML文件缓存成一个静态的HTML页,当设定Smarty的cache属性为true时,在Smarty设定的cachetime期内将用户的WEB请求直接转换到这个静态的HTML文件中来,这相当于调用一个静态的HTML文件。   4.插件技术:Smarty可以自定义插件。插件实际就是一些自定义的函数。   5.模板中可以使用if/elseif/else/endif。在模板文件使用判断语句可以非常方便的对模板进行格式重排。   不适合使用Smarty的地方:   1. 需要实时更新的内容。例如像股票显示,它需要经常对数据进行更新,导致经常重新编译模板,所以这类型的程序使用Smarty会使模板处理速度变慢。   2. 小项目。小项目因为项目简单而美工与程序员兼于一人的项目,使用Smarty会在一定程度上丧失PHP开发迅速的优点。 我的网站一直在用,大家有兴趣的可以去看下,www.gg265.net和www.fmrpg.com。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值