ホームページ  >  記事  >  バックエンド開発  >  PHP プロジェクトでのいくつかの一般的な PHP 自己構築関数の詳細な説明_PHP チュートリアル

PHP プロジェクトでのいくつかの一般的な PHP 自己構築関数の詳細な説明_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:08:50974ブラウズ

以下の PHP 関数は、当社の IT 部門で最も一般的に使用されるプロジェクト開発関数であり、多くのプロジェクトで使用されており、比較的一般的です。
1. リクエストインターフェイス処理関数

コードをコピー コードは次のとおりです:

/**
*curl アクセス プログラム インターフェイス
* @param 文字列
* @return array
*/
function getCurlDate($url, $datas, $key) {
$ datas['time'] = $_SERVER['REQUEST_TIME'] + 300;
$post_data['post'] = urlencode(serialize($datas), "ENCODE", $key);
// echo $ url;
$ch =curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // データを送信しています。
curl_setopt($ch, CURLOPT_POST, 1);
// post 変数を追加します
Curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data)
// dump(curl_error($ ch); );
curl_close($ch);
return json_decode($output, true)



2. コードをコピーします

コードは次のとおりです:
/**
* @ファイル拡張子を取得
* @$pic 文字列 画像のパス */ function get_file_ext($pic) { Return substr($pic, strrpos($pic, '.') + 1);


3.復号化関数





コードをコピー

コードは次のとおりです:

/**
* 文字列暗号化
* @param $string 暗号化する文字
* @param $operation 暗号化または復号化
* @param $key クラックを防ぐためのウェブサイト暗号化キー
* @return string
*/
function authcode($string, $operation = 'DECODE', $key = '', $expiry = 0) {
$ckey_length = 4; 
$key = md5($key ? $key : '^www.itokit.com$'); 
$keya = md5(substr($key, 0, 16)); 
$keyb = md5(substr($key, 16, 16)); 
$keyc = $ckey_length ? ($operation == 'DECODE' ? substr($string, 0, $ckey_length) : substr(md5(microtime()), -$ckey_length)) : ''; 

$cryptkey = $keya 。 md5($keya . $keyc); 
$key_length = strlen($cryptkey); 

$string = $operation == 'デコード' ? Base64_decode(substr($string, $ckey_length)) : sprintf('%010d', $expiry ? $expiry + time() : 0) 。 substr(md5($string . $keyb), 0, 16) . $string; 
$string_length = strlen($string); 

$result = ''; 
$box = range(0, 255); 

$rndkey = array(); 
for ($i = 0; $i $rndkey[$i] = ord($cryptkey[$i % $key_length]); 
}

for ($j = $i = 0; $i $j = ($j + $box[$i] + $rndkey[$i]) % 256; 
$tmp = $box[$i]; 
$box[$i] = $box[$j]; 
$box[$j] = $tmp; 
}

for ($a = $j = $i = 0; $i < $string_length; $i++) {
$a = ($a + 1) % 256; 
$j = ($j + $box[$a]) % 256; 
$tmp = $box[$a]; 
$box[$a] = $box[$j]; 
$box[$j] = $tmp; 
$result .= chr(ord($string[$i]) ^ ($box[($box[$a] + $box[$j]) % 256])); 
}

if ($operation == 'DECODE') {
if ((substr($result, 0, 10) == 0 || substr($result, 0, 10) - time() > 0) && substr($result, 10, 16) == substr(md5(substr($result, 26) . $keyb), 0, 16)) {
return substr($result, 26); 
} else {
return ''; 
}
} else {
return $keyc 。 str_replace('=', '',base64_encode($result)); 
}
}

4.字符串转十六进制
复制代次のように下:

/**
* 文字列を 16 進数に変換します
* @paramknown_type $s
*/
function str2hex($s) {
$r = ""; 
$hexes = array ("0","1","2","3","4","5","6","7","8","9","a", "b"、"c"、"d"、"e"、"f"); 
for ($i=0; $i $r .= ($hexes [(ord($s{$i}) >> 4)] . $hexes [ (ord($s{$i}) & 0xf)]); 
$r を返します。 
}

5.十六进制转字符串
复制代码代码如下:

/**
* 16 進数から文字列へ
* @paramknown_type $s
*/
function hex2str($s) {
$r = "";
for ( $i = 0; $i {
$x1 = ord($s{$i});
$x1 = ($x1>=48 && $x1 $x2 = ($x2>=48 && $x2 $r .= chr(($x1 戻り$string
/** /
functiontripslashes_deep($string)
{
return is_array($string) ? array_map('stripslashes_deep', $string) :stripslashes($string)
}




8. htmlspecialchars で処理された文字を返します。 array





コードをコピー

コードは次のとおりです:

/** * htmlspecialchars によって処理された文字列または配列を返します
* @param $string 処理する必要がある文字列または配列
* @リターン混合
*/
function new_html_special_chars($string) { if(!is_array($string)) return htmlspecialchars($string) foreach($string as $key => $val) $string[$key] = new_html_special_chars($val); return $string;

9. リクエスト ip を取得します




コードは次のとおりです:


/**
* リクエスト IP を取得
*
* @return IP アドレス
*/ function ip () { if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) {
$ip = getenv('HTTP_CLIENT_IP')
} elseif(getenv); ( 'http_x_forwarded_for')&& strcasecmp( 'http_x_forwarded_for')、 'unknown')){$ ip = getEnv( 'http_x_forwarded_for') ), 'unknown') ) {
$ip = getenv('REMOTE_ADDR');
} elseif(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR' ], 'unknown') ) { $ip = $_SERVER['REMOTE_ADDR'] } return preg_match ( '/[d.]{7,15}/', $ip, $matches ) ? 0] : '';


10。文字インターセプトは UTF8/GBK をサポートします





コードは次のとおりです。

/**
* 文字インターセプトは UTF8/GBK をサポートします
* @param $string
* @param $length
* @param $dot
*/
function str_cut($string, $length, $dot = '...') {
$strlen = strlen($string); 
if($strlen <= $length) return $string; 
$string = str_replace(array(' ',' ', '&', '"', ''', '"', '”', '—', '<', '>', '· ', '…')、array('∵',' '、'&'、'"'、"'"、'"'、'"'、'—'、'<'、'>'、 '・'、'…')、$string); 
$strcut = ''; 
if(strto lower(CHARSET) == 'utf-8') {
$length = intval($length-strlen($dot)-$length/3); 
$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) {
ブレーク; 
}
}
if($noc > $length) {
$n -= $tn; 
}
$strcut = substr($string, 0, $n); 
$strcut = str_replace(array('∵', '&', '"', "'", '"', '"', '—', '<', '>', '・', '…')、array(' '、'&'、'"'、'''、'"'、'"'、'—'、'<'、'>'、'・'、'... ')、$strcut); 
} else {
$dotlen = strlen($dot); 
$maxi = $length - $dotlen - 1; 
$current_str = ''; 
$search_arr = array('&',' ', '"', "'", '"', '"', '—', '<', '>', '·', '…' ,'∵');
$replace_arr = array('&',' ', '"', ''', '"', '”', '—', '<', '>', ' ·'、'…'、' '); 
$search_flip = array_flip($search_arr); 
for ($i = 0; $i $current_str = ord($string[$i]) > 127 ? $string[$i].$string[++$i] : $string[$i]; 
if (in_array($current_str, $search_arr)) {
$key = $search_flip[$current_str]; 
$current_str = str_replace($search_arr[$key], $replace_arr[$key], $current_str); 
}
$strcut .= $current_str; 
}
}
return $strcut.$dot; 
}

11.生産随机字符串
复制代代码如下:

/**
* ランダムな文字列を生成します
*
* @param int $length 出力長
* @param string $chars オプション、デフォルトは 0123456789 です
* @return string String
*/
functionrandom($length, $chars = '0123456789') {
$hash = '';
$max = strlen($chars) - 1; 0; $i $hash .= $chars[mt_rand(0, $max)] }



12.配列


のコード
コードは次のとおりです:
/*** 文字列を配列に変換します *
* @param string $data String
* @return array 配列形式を返します。データが空の場合は、空の配列を返します
*/
function string2array($data) {
if($data == '') return array ();
eval("$array = $data;");
return $array;



コードをコピーします。


/* *
* 配列を文字列に変換します
* * @param array $data 配列 * @param bool $isformdata 0 の場合、new_stripslashes 処理は使用されません、オプションのパラメータ、デフォルトは 1 です
* @return string 文字列を返します。データは空です、空を返します
*/
function array2string($data, $isformdata = 1) {
if($data == '') return ''; if($isformdata) $data = new_stripslashes($ data); return addedlashes(var_export($data, TRUE));

14. バイト数を他の単位に変換します




コードは次のとおりです。


/ **&#&* /
Functionsizecount($ filesize){
} elseif($ filesize&gt; = 1048576){1024* 100) / 100


http://www.bkjia.com/PHPjc/327409.htmlwww.bkjia.com
tru​​e
http://www.bkjia.com/PHPjc/327409.html技術記事以下の PHP 関数は、当社の IT 部門で最も一般的に使用されるプロジェクト開発関数であり、多くのプロジェクトで使用されており、比較的一般的です。 1.リクエストインターフェースの処理関数...




声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。