فانکشن های رایج در برنامه نویسی
سلام دوستان در این تاپیک تصمیم گرفتم هر کسی که فانکشن مفید و کاربردی نوشته بجز اونایی که استاد نوشته رو بزاره تا بقیه هم استفاده کنند و سرعت کار بالا بره
فانکشن هر زبانی خواستید بزارید .مرسی دوستان
منتظر پیشنهادات و انتقاداتتون هستم
تابعی به زبان جی اس برای تبدیل شماره ۱۶ رقمی به شماره کارت
مثال:
1111-2222-3333-4444 <= 1111222233334444
function cardnumber(Number)
{
Number+= '';
Number= Number.replace('-', ''); Number= Number.replace('-', ''); Number= Number.replace('-', '');
Number= Number.replace('-', ''); Number= Number.replace('-', ''); Number= Number.replace('-', '');
x = Number.split('.');
y = x[0];
z= x.length > 1 ? '.' + x[1] : '';
var rgx = /(\d{4})(\d+)/;
while (rgx.test(y))
y= y.replace(rgx, '$1' + '-' + '$2');
return y+ z;
}
فانکشنی برای محسابه زمان سپری شده که برای ورودی فانکشن باید تایم استمپ رو بهش بدیم .مثال:
دو روز پیش
function ago($tm, $lang = 'fa', $ashtml = true) {
$local = array('style' => array('fa' => 'style="direction:rtl;"', 'en' => 'style="direction:ltr"'), 'times' => array('fa' => array('ثانیه', 'دقیقه', 'ساعت', 'روز', 'هفته', 'ماه', 'سال', 'دهه'), 'en' => array('second', 'minute', 'hour', 'day', 'week', 'month', 'year', 'decade')), 'ago' => array('fa' => 'پیش', 'en' => 'ago'));
if (intval($tm) > 0) {
$cur_tm = time();
$dif = $cur_tm - $tm;
$lngh = array(1, 60, 3600, 86400, 604800, 2630880, 31570560, 315705600);
for ($v = sizeof($lngh) - 1; ($v >= 0) && (($no = $dif / $lngh[$v]) <= 1); $v--)
; if ($v < 0)
$v = 0; $_tm = $cur_tm - ($dif % $lngh[$v]);
$no = floor($no);
if ($no <> 1 && $lang == 'en')
$local['times'][$lang][$v] .= 's'; $x = sprintf("%d %s ", $no, $local['times'][$lang][$v]);
if ($ashtml)
return " " . $x . ' ' . $local['ago'][$lang] . "";
else
return $x . ' ' . $local['ago'][$lang];
} else {
return '-';
}
}
تاپیک خیلی عالیه . امیدوارم همه دوستان توابع خودشون رو به اشتراک بزارن - فعلا من چند تابعی که خیلی به درد خودم خورده رو میزارم
تابع تشخص ای پی کاربر به صورت صحیح :
function get_client_ip() {
$ipaddress = '';
if (getenv('HTTP_CLIENT_IP'))
$ipaddress = getenv('HTTP_CLIENT_IP');
else if(getenv('HTTP_X_FORWARDED_FOR'))
$ipaddress = getenv('HTTP_X_FORWARDED_FOR');
else if(getenv('HTTP_X_FORWARDED'))
$ipaddress = getenv('HTTP_X_FORWARDED');
else if(getenv('HTTP_FORWARDED_FOR'))
$ipaddress = getenv('HTTP_FORWARDED_FOR');
else if(getenv('HTTP_FORWARDED'))
$ipaddress = getenv('HTTP_FORWARDED');
else if(getenv('REMOTE_ADDR'))
$ipaddress = getenv('REMOTE_ADDR');
else
$ipaddress = 'UNKNOWN';
return $ipaddress;
}
تابع مینیفای کن (minify) کد های اچ تی ام ال به صورت داینامیک (فقط کافیه کد رو قبل از نمایش به این تابع بدی (البته تو قسمت view میشه خیلی راحت از این تابع استفاده کرد ))
function minifyContent($content){
$search = array(
'/\>[^\S ]+/s', // strip whitespaces after tags, except space
'/[^\S ]+\</s', // strip whitespaces before tags, except space
'/(\s)+/s' // shorten multiple whitespace sequences
);
$replace = array(
'>',
'<',
'\\1'
);
$content = preg_replace($search, $replace, $content);
return $content;
}
تابع برسی صحت شماره کارت ملی
function melliCodeChecker($code){
if(!preg_match('/^[0-9]{10}$/',$code))
return false;
for($i=0;$i<10;$i++)
if(preg_match('/^'.$i.'{10}$/',$code))
return false;
for($i=0,$sum=0;$i<9;$i++)
$sum+=((10-$i)*intval(substr($code, $i,1)));
$ret=$sum%11;
$parity=intval(substr($code, 9,1));
if(($ret<2 && $ret==$parity) || ($ret>=2 && $ret==11-$parity))
return true;
return false;
}
تابع برسی ایمیل :
function checkEmail($email){
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
return false;
}else{
return true;
}
}
تابع نسبتا قابل قبول برای برسی شماره موبایل های ایرانی
function checkPhone($phone){
if ( !is_numeric( $phone ) ) {
return false;
}else{
if($phone[0] == 0 && $phone[1] == 9 && strlen($phone)== 11){
return true;
}else if ($phone[0] == '+' && $phone[1] == 9 && $phone[2] == 8 && $phone[3] == 9 && strlen($phone)==13){
return true;
}else if($phone[0] == 9 && $phone[1] == 8 && $phone[2] == 9 && strlen($phone)==12){
return true;
}else{
return false;
}
}
}
تابع تبدیل اعدادفارسی به انگلیسی :
function convert2english($string) {
$persinaDigits1= array('۰', '۱', '۲', '۳', '۴', '۵', '۶', '۷', '۸', '۹');
$persinaDigits2= array('٩', '٨', '٧', '٦', '٥', '٤', '٣', '٢', '١', '٠');
$allPersianDigits=array_merge($persinaDigits1, $persinaDigits2);
$replaces = array('0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9');
return str_replace($allPersianDigits, $replaces , $string);
}
تابع تبدیل اعداد انگلیسی به فارسی :
function convert2persian($string) {
$persinaDigits1= array('۰', '۱', '۲', '۳', '۴', '۵', '۶', '۷', '۸', '۹');
$persinaDigits2= array('٩', '٨', '٧', '٦', '٥', '٤', '٣', '٢', '١', '٠');
$allPersianDigits=array_merge($persinaDigits1, $persinaDigits2);
$replaces = array('0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9');
return str_replace($replaces ,$allPersianDigits, $string);
}
تابع دیگه ای اگه تو سورس هام به چشمم خورد باز سعی میکنم قرار بدم تا دوستان انشالله بتونند استفاده کنند ازشون .
کم و ضعیف بودن توابع رو من عذر میخوام ، انشالله کم کم بازم اضافه میکنیم .
موفق باشید .
با تشکر از دوستان بخاطر توابع خوبشون
توابع تبدیل تاریخ شمسی به میلادی و برعکس که بسیار عالی کار می کنه
function gregorian_to_jalali ($date,$str)
{
$g_days_in_month = array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
$j_days_in_month = array(31, 31, 31, 31, 31, 31, 30, 30, 30, 30, 30, 29);
$date=explode('-',$date);
$year=$date['0'];
$Month=$date['1'];
$day=$date['2'];
$gy = $year-1600;
$gm = $Month-1;
$gd = $day-1;
$g_day_no = 365*$gy+div($gy+3,4)-div($gy+99,100)+div($gy+399,400);
for ($i=0; $i < $gm; ++$i)
$g_day_no += $g_days_in_month[$i];
if ($gm>1 && (($gy%4==0 && $gy%100!=0) || ($gy%400==0)))
/* leap and after Feb */
$g_day_no++;
$g_day_no += $gd;
$j_day_no = $g_day_no-79;
$j_np = div($j_day_no, 12053); /* 12053 = 365*33 + 32/4 */
$j_day_no = $j_day_no % 12053;
$jy = 979+33*$j_np+4*div($j_day_no,1461); /* 1461 = 365*4 + 4/4 */
$j_day_no %= 1461;
if ($j_day_no >= 366) {
$jy += div($j_day_no-1, 365);
$j_day_no = ($j_day_no-1)%365;
}
for ($i = 0; $i < 11 && $j_day_no >= $j_days_in_month[$i]; ++$i)
$j_day_no -= $j_days_in_month[$i];
$jm = $i+1;
$jd = $j_day_no+1;
if($str) return $jy.'/'.$jm.'/'.$jd ;
return array($jy, $jm, $jd);
}
function jalali_to_gregorian($date,$str)
{
$g_days_in_month = array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
$j_days_in_month = array(31, 31, 31, 31, 31, 31, 30, 30, 30, 30, 30, 29);
$date=explode('/',$date);
$jy = (int)($date['0'])-979;
$jm = (int)($date['1'])-1;
$jd = (int)($date['2'])-1;
$j_day_no = 365*$jy + div($jy, 33)*8 + div($jy%33+3, 4);
for ($i=0; $i < $jm; ++$i)
$j_day_no += $j_days_in_month[$i];
$j_day_no += $jd;
$g_day_no = $j_day_no+79;
$gy = 1600 + 400*div($g_day_no, 146097); /* 146097 = 365*400 + 400/4 - 400/100 + 400/400 */
$g_day_no = $g_day_no % 146097;
$leap = true;
if ($g_day_no >= 36525) /* 36525 = 365*100 + 100/4 */
{
$g_day_no--;
$gy += 100*div($g_day_no, 36524); /* 36524 = 365*100 + 100/4 - 100/100 */
$g_day_no = $g_day_no % 36524;
if ($g_day_no >= 365)
$g_day_no++;
else
$leap = false;
}
$gy += 4*div($g_day_no, 1461); /* 1461 = 365*4 + 4/4 */
$g_day_no %= 1461;
if ($g_day_no >= 366) {
$leap = false;
$g_day_no--;
$gy += div($g_day_no, 365);
$g_day_no = $g_day_no % 365;
}
for ($i = 0; $g_day_no >= $g_days_in_month[$i] + ($i == 1 && $leap); $i++)
$g_day_no -= $g_days_in_month[$i] + ($i == 1 && $leap);
$gm = $i+1;
$gd = $g_day_no+1;
if($str) return $gy.'/'.$gm.'/'.$gd ;
return array($gy, $gm, $gd);
}
تایع بررسی کردن reCaptcha google .چک میکنه کاربر تیک کپچا رو زده یا نه
function validateReCaptcha($captcha)
{
$secret = 'SECRET';
if (!$captcha) {
return false;
}
$response = json_decode(file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=$secret&response=" . $captcha . "&remoteip=" . $_SERVER['REMOTE_ADDR']), true);
if ($response['success'] == false) {
return false;
} else {
return true;
}
}
تایع تغییر کیفیت عکس
function compressImg($source, $destination, $quality)
{
$info = getimagesize($source);
if ($info['mime'] == 'image/jpeg')
$image = imagecreatefromjpeg($source);
elseif ($info['mime'] == 'image/gif')
$image = imagecreatefromgif($source);
elseif ($info['mime'] == 'image/png')
$image = imagecreatefrompng($source);
imagejpeg($image, $destination, $quality);
return $destination;
}
تابع دریافت سایز فایل
function FileSizeConvert($bytes)
{
$bytes = floatval($bytes);
$arBytes = array(
0 => array(
"UNIT" => "TB",
"VALUE" => pow(1024, 4)
),
1 => array(
"UNIT" => "GB",
"VALUE" => pow(1024, 3)
),
2 => array(
"UNIT" => "MB",
"VALUE" => pow(1024, 2)
),
3 => array(
"UNIT" => "KB",
"VALUE" => 1024
),
4 => array(
"UNIT" => "B",
"VALUE" => 1
),
);
foreach ($arBytes as $arItem) {
if ($bytes >= $arItem["VALUE"]) {
$result = $bytes / $arItem["VALUE"];
$result = str_replace(".", ",", strval(round($result, 2))) . " " . $arItem["UNIT"];
break;
}
}
return $result;
}
تابع unset یا حذف کردن کوکی
function unset_cookie($key){
unset($_COOKIE[$key]);
setcookie($key, null, -1, '/');
}
تابع گرفتن Mac Address
function GetMAC(){
ob_start();
system('getmac');
$Content = ob_get_contents();
ob_clean();
return substr($Content, strpos($Content,'\\')-20, 17);
}
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .