好玩的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;
}
---------------------------------------------------------------------------------
總結
以上是生活随笔為你收集整理的好玩的php函数,几个实用的PHP函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php上传文件到七牛云源码,larave
- 下一篇: 有效期5年 任正非重申华为不造车:禁用“