Skip to content

Instantly share code, notes, and snippets.

@ssut
Created June 5, 2013 13:26
Show Gist options
  • Save ssut/5713833 to your computer and use it in GitHub Desktop.
Save ssut/5713833 to your computer and use it in GitHub Desktop.
Extension of PHP STL.
<?php
/**
* Library Extension :: Extension of PHP STL.
**/
function kDate($_addHyphen = false) {
return date($_addHyphen ? 'Y-m-d' : 'Ymd');
}
function kDatetime() {
return date('Y-m-d H:i:s');
}
// Functions for Array and stdClass.
function arrayEncode($_Array) {
return base64_encode(json_encode($_Array));
}
function arrayDecode($_encodedArray) {
return json_decode(base64_decode($_encodedArray), true);
}
function arrayToObj($_Array) {
return json_decode(json_encode($_Array));
}
// Functions for String.
function kHash($_plainData) {
$_codeA = hash('sha512', base64_decode(sha1($_plainData) . md5($_plainData) . base64_encode($_plainData)) . base64_decode(md5($_plainData) . sha1($_plainData) . base64_encode($_plainData)));
$_codeB = hash('sha512', base64_encode(sha1($_plainData) . md5($_plainData) . base64_encode($_plainData)) . base64_encode(md5($_plainData) . sha1($_plainData) . base64_encode($_plainData)));
return substr($_codeA, strlen($_codeA) / 2, strlen($_codeA) / 2) . substr($_codeA, 0, strlen($_codeA) / 2);
}
function kFiltering($_Data) {
$_filterTags = array('iframe', 'script', 'style', 'meta', 'link', 'title', 'xmp', 'pre');
foreach($_filterTags as $_tagName) {
$_Data = preg_replace('/<' . $_tagName . '.*<\/' . $_tagName . '>/is', '', $_Data);
}
$_Data = kBlank($_Data, true);
foreach($_filterTags as $_tagName) {
$_Data = preg_replace('/<' . $_tagName . '.*\/?>/i', '', $_Data);
}
$_Data = preg_replace_callback('/<[a-z]+(.*)>/i', 'kFilteringAttr', $_Data);
return kBlank($_Data);
}
function kFilteringAttr($_Attrs) {
return preg_replace('/on([a-z]+)=/i', 'q:$1=', preg_replace('/([a-z]+)=("|\')javascript:/i', '$1=$2_' . substr(kHash(time()), 0, 5) . ':', $_Attrs[0]));
}
function kName($_normalString) {
return ucfirst(strtolower($_normalString));
}
function kFormalName($_normalString) {
return preg_replace('/[^a-z0-9_]/i', '', strtolower($_normalString));
}
function kClassName($_classObj) {
return strtolower(get_class($_classObj));
}
function kBlank($_normalData, $_splitLine = false) {
return preg_replace('/>' . (!$_splitLine ? '\s+' : '') . '</', '>' . ($_splitLine ? chr(10) . chr(13) : '') . '<', preg_replace('/\s{2,}/', ' ', strtr($_normalData, array(
chr(9) => '', chr(13) => '', chr(10) => ''
))));
}
function kRand($_start, $_end) {
if(function_exists('mt_rand')) return mt_rand($_start, $_end);
else return rand($_start, $_end);
}
function kRandString() {
return substr(chr(kRand(33, 47)) . chr(kRand(58, 64)) . chr(kRand(33, 47)) . chr(kRand(91, 96)) . chr(kRand(123, 126)) . chr(kRand(33, 47)) . chr(kRand(58, 64)) . chr(kRand(33, 47)) . chr(kRand(91, 96)) . chr(kRand(123, 126)), 0, kRand(5, 10));
}
function kXml($_Superlative = 'result') {
return new SimpleXMLElement('<?xml version="1.0" encoding="UTF-8" ?><' . preg_replace('/[^a-z]/', '', strtolower($_Superlative)) . ' />');
}
// Functions for the files or directories.
function kRead($_fileAddr) {
if(is_file($_fileAddr) && is_readable(dirname($_fileAddr))) {
$_fileHwnd = fopen($_fileAddr, 'r');
$_fileCtx = '';
while(!feof($_fileHwnd))
$_fileCtx .= fread($_fileHwnd, 1024);
fclose($_fileHwnd);
return $_fileCtx;
} else {
return null;
}
}
function kWrite($_fileAddr, $_fileCtx, $_writeMod = 'w') {
if(is_writable(dirname($_fileAddr))) {
$_fileHwnd = fopen($_fileAddr, $_writeMod);
$_fileResult = fwrite($_fileHwnd, $_fileCtx);
fclose($_fileHwnd);
return $_fileResult;
} else {
return null;
}
}
function kAppend($_fileAddr, $_fileCtx) {
return kWrite($_fileAddr, $_fileCtx, 'a');
}
function kMake($_dirAddr, $_dirPermission = 0707) {
if(!is_dir($_dirAddr) && is_writable(dirname($_dirAddr))) {
return mkdir($_dirAddr, $_dirPermission);
} else {
return null;
}
}
function kRemove($_targetName) {
if(is_file($_targetName)) {
return unlink($_targetName);
} else if(is_dir($_targetName)) {
foreach(glob($_targetName . '/*') as $_fileName) {
if(is_dir($_fileName)) {
kRemove($_fileName);
} else if(is_file($_fileName)) {
unlink($_fileName);
}
}
return rmdir($_targetName);
}
}
function kFileTime($_targetName) {
if(is_file($_targetName))
return filemtime($_targetName);
else
return -1;
}
function kStrcut($_plainData, $_length, $_check = false, $_tail = '..') {
preg_match_all('/[\xEA-\xED][\x80-\xFF]{2}|./', $_plainData, $_Match);
$_Matches = $_Match[0];
$_dataLength = strlen($_plainData);
$_tailLength = strlen($_tail);
$_cMatches = count($_Matches);
if ($_dataLength <= $_length) return $_plainData;
if (!$_check && $_cMatches <= $_length) return $_plainData;
$_Return = array();
$_Count = 0;
for ($i = 0; $i < $_length; $i++) {
$_Count += ($_check && strlen($_Matches[$i]) > 1) ? 2 : 1;
if ($_Count + $_tailLength > $_length) break;
$_Return[] = $_Matches[$i];
}
return join('', $_Return) . $_tail;
}
function kURL($_URL = '', $_isSSL = false, $_Opts = array()) {
if($_URL == '') return null;
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, 0);
if($_isSSL) curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
if($_Opts['User-Agent']) curl_setopt($ch, CURLOPT_USERAGENT, $_Opts['User-Agent']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $_URL);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment