راسخون

بررسی توابع PHP

sahel_007 کاربر نقره ای
|
تعداد پست ها : 353
|
تاریخ عضویت : شهریور 1388 

تابع strtok : این تابع یک رشته را گرفته و آن را به رشته های کوچکتر تقسیم می کند. دارای دو ورودی است اولی، نام رشته و بعدی، جدا کننده است. خروجی تابع رشته است.

 

مثال : در یک رشته هر گاه به اسپیس رسید کلمه را در یک سطر چاپ کند.

 

<?php

          // تعریف رشته

?>

خروجی :

 

Hello
world.
Beautiful
day
today.

ابتدا رشته را تعریف و سپس در خط بعدی تابع، نام رشته و جدا کننده که اسپیس است را گرفته و در حلقه while چاپ می کند در این حلقه تابع دوباره فراخوانی می شود اگر این فراخوانی صورت نگیرد در یک حلقه بی نهایت رشته جدا شده اول تکرار می شود.

 

توابع مشابه :

 

تابع explode : تقسیم یک رشته به رشته های کوچک، ورودی تابع رشته ~~> خروجی تابع آرایه است.

 

sahel_007 کاربر نقره ای
|
تعداد پست ها : 353
|
تاریخ عضویت : شهریور 1388 

تابع md5 : این تابع یک رشته را گرفته و هش می کند. یعنی رشته را به صورت یک طرفه و نامتقارن و غیر قابل decode تبدیل می کند. و برای هش کردن کلمه های عبور در بانک اطلاعاتی استفاده می شود از لحاظ امنیتی این تابع را نمی شود دیکد کرد ولی اگر کسی برنامه ای نوشته و تمام کاراکترهای مثلا 8 رقمی را با این تابع هش کند و معادل آن را هم ذخیره کند سپس می تواند با پسوردی که قبلا هش شده مقایسه کند و معادل آن که قبلا ذخیره کرده را پیدا کند ولی این روش برای کلمه های عبور ساده جواب می دهد و بخصوص اگر تعداد کاکترهای رمز عبور از 8 بیشتر باشد خیلی سخت و گاهی غیر ممکن می شود.

البته روشهای برای حل این مشکل وجود دارد مثلا یک کلمه ثابت بی معنی به کلمه عبور اضافه سپس هش کنید یا چند بار هش کنید.

 

مثال :

 

<?php

?>

خروجی :

 

8b1a9953c4611296a827abf8c47804d7
Hello world!

در خط اول رشته تعریف شده و در خط دوم رشته با تابع هش شده و چاپ می شود و در خط سوم هش رشته با معادل هش شده قبلی آن مقایسه می شود و چون برابر هستند چاپ سلام جهان انجام می شود.

لازم به این نکته اشاره کنم که هر کلمه و رشته ای معادل هش شده ای یکتای دارد مثلا معادل هش شده Hello همیشه برابر 8b1a9953c4611296a827abf8c47804d7 است.

 

sahel_007 کاربر نقره ای
|
تعداد پست ها : 353
|
تاریخ عضویت : شهریور 1388 

تابع  sha1 : این تابع هم مانند تابع md5 وظیفه اش هش کردن رشته وردوی است md5 یک رشته هش ۱۲۸ بیتی (۳۲ کاراکتر هگزادسیمال) برمی گرداند  ولی sha1 یک رشته هش ۱۶۰ بیتی (۴۰ کاراکتر هگزادسیمال) را بر می گرداند.

HASH : در لغت به معنای خرد کردن چيزی و در هم کردن آن است. در رايانه Hash توابعی که رشته ورودی خود را به وسيله الگوریتمی تبدیل به رشته ای معادل یکتای می کند.

مثال : رشته را با تابع sha1 هش کرده و چاپ کند.

 

<?php

?>

خروجی :

 

f7ff9e8b7bb2e09b70935a5d785e0cc5d9d0abf0
Hello world!

در این مثال هم تابع رشته را هش کرده و با معادل هش شده آن با همین تابع مقایسه کرده و چاپ می کند.

 

sahel_007 کاربر نقره ای
|
تعداد پست ها : 353
|
تاریخ عضویت : شهریور 1388 

تابع crypt : این تابع مانند دو تابع قبلی یعنی md5 , sha1 هش روی رشته را انجام می دهد با این تفاوت که برای اینکه امنیت بیشتر از salt (نمک) استفاده شده است.

دارای دو آرگومان است اولی، رشته ورودی و دومی، salt یا رشته ثابت که به رشته اضافه شده سپس هش انجام می شود.

Salt (نمک):

در دو تابع قبلی یعنی md5 , sha1 وقتی کسی به بانک اطلاعاتی که پسوردها با دو تابع قبل هش شده بودند دسترسی پیدا می کرد می توانست با ساختن یک دیکشنری از رشته ها و معادل هش شده آنها با توابع مورد نظر با مقایسه و صرف زمان به پسوردها برسد برای حل این مشکل اشاره شد که می توانیم یک رشته تصادفی به پسورد اضافه سپس هش را با توابع قبل انجام دهیم این باعث می شد که هکر نتواند با دیکشنری از قبل ساخته خود به کلمات عبور دسترسی پیدا کند و مجبور برای هر رکورد هش آن را دوباره محاسبه کند که خیلی سخت و زمان گیر و گاهی غیر ممکن است.

این رشته تصادفی اضافه شده به پسورد را Salt می گویند که باعث پیچیدگی کلمات عبور می شود و امنیت آنها را بالا می برد در این روش 4096 نوع هش از یک پسورد می توان ایجاد کرد و به همین دلیل پیدا کردن پسورد سخت می شود ولی باز هم امنیت کامل ایجاد نمی شود.

ساختار:

 

crypt(string , salt)

مثال :

<?php

?>

خروجی :

 

seBgtAkJR1wIw

ابتدا کلمه عبور و salt تعرف شده و با تابع رمزگذاری شده و مقدار هش شده چاپ می شود. برای امنیت بیشتر بهتر است که salt را به صورت تصادفی برای هر کلمه عبور در نظر بگیریم سپس مقدار تصادفی salt را برای بازیابی و مقایسه در بانک برای هر رکورد ذخیره کنیم.

 

sahel_007 کاربر نقره ای
|
تعداد پست ها : 353
|
تاریخ عضویت : شهریور 1388 

تابع round : تابع گرد کردن اعداد اعشاری است این تابع دارای دو آرگومان ورودی است که اولی، عدد اعشاری و دومی تعداد اعشار را معین می کند اگر منفی باشد روی قسمت صحیح تاثیر گذاشته و از چپ آن را صفر می کند اگر مقداری برای این آرگومان مشخص نشود خروجی تابع عدد صحیح است.

 

شکل کلی :

round(تعداد ارقام اعشار , نام متغیر ورودی)

مثال :

<?php

?>

خروجی :

33.3
33.3333333333

متغیر تعریف کرده و با تابع round متغیر اعشاری را تا یک رقم رند می کند و چاپ می شود در تابع دوم 10 رقم برای اعشار در نظر گرفته شده است. و تابع سوم از سمت چپ سه رقم قسمت صحیح عدد را صفر می کند.

 

sahel_007 کاربر نقره ای
|
تعداد پست ها : 353
|
تاریخ عضویت : شهریور 1388 

تابع ceil : تابع گرد کردن اعداد اعشاری رو به بالا است یعنی حد بالای عدد اعشاری را در خروجی می دهد در مورد اعداد مثبت عدد بزرگتر و برای اعداد اعشاری منفی حد بالا، عدد کوچکتر است مثلاٌ حد بالا 5.4 را 6 گرفته و حد بالای 5.9- را 5- در نظر می گیرد.

 

شکل کلی :

ceil(ورودی تابع به صورت عدد اعشاری)

مثال :

<?php

?>

خروجی :

1
1
5
6
-5
-5

همانطور که قبلا اشاره شد این تابع اعداد اعشاری را رو به بالا گرد می کند که در چهار خط اول مشاهده می کنید و در خط پنج و شش چون عدد منفی است و گرد شدن به طرف بالا به معنی حرکت به طرف راست محور است.

 

sahel_007 کاربر نقره ای
|
تعداد پست ها : 353
|
تاریخ عضویت : شهریور 1388 

تابع floor : تابع گر کردن عدد اعشاری به طرف پایین است یعنی اعداد اعشاری را به طرف عدد صحیح گرد می کند و دارای یک آرگومان ورودی است.

 

شکل کلی :

floor(ورودی تابع به صورت عدد اعشاری)

مثال :

<?php

?>

خروجی :

0
0
5
5
-6
-6

این تابع به طرف پایین گرد می کند و در مورد اعداد مثبت مشاهده میکنید و برای اعداد منفی در محور مختصات به طرف پایین محور است.

 

sahel_007 کاربر نقره ای
|
تعداد پست ها : 353
|
تاریخ عضویت : شهریور 1388 

در پست های قبل سه تابع کار با اعداد اعشاری را بررسی کردیم برای مقایسه آنها به مثال زیر توجه کنید.

 

مثال :

<?php

?>

خروجی :

4 4 3

تابع round ،دارای دو آرگومان است که آرگومان دوم تعداد ارقام اعشار را مشخص می کند و وقتی تعریف نشود عدد را گرد می کند قسمت اعشار کوچکتر از 50 باشد به طرف پایین گرد می کند و بزرگتر مساوی 50 باشد به طرف بالا گرد میکند مثلا عدد 2.5 را 3 و عدد 2.49 را 2 در خروجی تابع خواهیم داشت.

تابع ceil ، تابعی است که اعداد اعشاری را به طرف بالا گرد می کند که در اینجا 3.6666666666667 را تبدیل به 4 می کند.

تابع floor ، تابع گرد کردن اعداد اعشاری رو به پایین است که در این مثال 3.6666666666667 را به طرف پایین یعنی قسمت صحیح عدد می رود که 3 است.

 

sahel_007 کاربر نقره ای
|
تعداد پست ها : 353
|
تاریخ عضویت : شهریور 1388 

تابع sort : این تابع یک آرایه را گرفته و به صورت صعودی مرتب می کند. برای سرعت بیشتر جستجو قبل از جستجو استفاده می شود به خصوص وقتی الگوریتم جستجو، quick sort باشد.

 

مثال 1 : یک آرایه را مرتب کرده سپس چاپ کند.

<?php

?>

خروجی :

fruits[0] = apple
fruits[1] = banana
fruits[2] = lemon
fruits[3] = orange

ابتدا یک آرایه تعریف شده و در خط دوم تابع sort آرایه را به صورت صعودی مرتب می کند و در خط بعدی با استفاده از حلقه، اندیس و مقدار آرایه مرتب شده چاپ می شود.

 

مثال 2 : کوچکترین و بزرگترین عضو آرایه را پیدا کرده و چاپ کند.

<?php

$series = array(76, 7348, 56, 2.6, 189, 67.59, 17594, 2648, 1929.79, 54, 329, 820, -1.10, -1.101);

// مرتب کردن آرایه

sort($series);

result: "Minimum is -1.101 "

$min = $series[0];

echo "Minimum is $min ";

// result: "Maximum is 17594"

$max = $series[sizeof($series)-1];

echo "Maximum is $max";

?>

خروجی :

Minimum is -1.101 Maximum is 17594

در خط اول آرایه ای از اعداد تعریف شده و خط بعدی تابع آرایه را به صورت صعودی مرتب می کند که اولین عضو آرایه کوچکترین عضو و آخرین عضو آرایه بزرگترین عدد آرایه خواهد بود که کوچکترین مقدار آرایه با اندیس صفر چاپ می شود برای یافتن بزرگترین مقدار آرایه که آخرین مقدار آرایه مرتب شده است از تابع sizeof که کارش برگرداندن طول یک آرایه است استفاده می کنیم چون اندیس آرایه ها از صفر شروع می شود بنابراین یکی از طول آرایه کم می کنیم و بزرگترین عضو آرایه را چاپ می کنیم.

 

sahel_007 کاربر نقره ای
|
تعداد پست ها : 353
|
تاریخ عضویت : شهریور 1388 

تابع number_format : تابع قالب بندی اعداد به صورت دلخواه، کاربرد این تابع در فاکتورها و برنامه های حسابداری است. دارای چهار آرگومان است:

این تابع کار گرد کردن اعداد را هم انجام داده و اگر قسمت اعشاری کمتر از 50 باشد (یک دوم) به طرف پایین و بزرگتر مساوی 50 به طرف بالا گرد می کند مثلا 32.4999 را 32 گرد می کند.

  1. آرگومان اول عدد ورودی است.
  2. تعداد ارقام اعشاری عدد که در خروجی تابع در نظر گرفته می شود.
  3.  علامتی است که ممیز و مقدار اعشاری را جدا می کند.
  4. جدا کننده مقدار صحیح عدد است.

 

شکل کلی :

number_format(number,decimals,decimalpoint,separator)

 

مثال :

<?php

echo number_format("3957459.4999");

echo "<br />";

echo number_format("3957459.4999",2);

echo "<br />";

echo number_format("3957459.4999",2,",",".");

echo "<br />";

echo number_format("3957459.4999",2,',','\'');

?>

خروجی :

3,957,459
3,957,459.50
3.957.459,50
3'957'459,50

در تابع اول عدد را گرد کرده و به صورت سه رقمی با ویرگول جدا شده و چاپ می شود در تابع دوم مقدار اعشار دو رقم در نظر گرفته شده و چاپ می شود در تابع سوم آرگومان دوم که 2 است تعداد دو رقم اعشار را مشخص می کند که در خروجی تابع باشد و آرگومان سوم، علامت جدا کننده اعشار است که ویروگول قرار گرفته و آرگومان آخر جدا کننده مقدار صحیح است که دات "." می باشد.

تابع آخر هم از بک اسلش استفاده شده است.

 

sahel_007 کاربر نقره ای
|
تعداد پست ها : 353
|
تاریخ عضویت : شهریور 1388 

تابع decbin : کار این تابع تبدیل دسیمال به باینری است یک عدد در مبنای 10 را گرفته و به مبنای 2 تبدیل می کند.

تابع decoct : تبدیل دسیمال به اکتال (مبنای هشت) است. عدد مبنای 10 را به مبنای 8 تبدیل می کند.

تابع dechex : تبدیل دسیمال به هگزا دسیمال است. عدد مبنای 10 را به مبنای 16 تبدیل می کند.

 

مثال :

<?php
   $num = 100;
   result: "Binary: 1100100 "
   $bin = decbin($num); echo "Binary: $bin ";
   result: "Octal: 144 "
   $oct = decoct($num); echo "Octal: $oct ";
   // تبدیل به هگزا دسیمال
   // result: "Hexadecimal: 64 "
   $hex = dechex($num);
   echo "Hexadecimal: $hex ";

?>

خروجی :

Binary: 1100100 Octal: 144 Hexadecimal: 64
sahel_007 کاربر نقره ای
|
تعداد پست ها : 353
|
تاریخ عضویت : شهریور 1388 

تابع deg2rad : کار تابع  تبدیل درجه به رادیان است.

تابع rad2deg: کار تابع  تبدیل رادیان به درجه است.

 

مثال :

<?php
// result: "90 degrees = 1.57079632679 radians "
 $degrees = 90;
 $radians = deg2rad($degrees);
 echo "$degrees degrees = $radians radians <br>";

 // result: "1.57079632679491 radians = 90 degrees"
 $radians = 1.57079632679491;
$degrees = rad2deg($radians);
echo "$radians radians = $degrees degrees";
?>

خروجی :

90 degrees = 1.5707963267949 radians
1.5707963267949 radians = 90.000000000001 degrees

 

sahel_007 کاربر نقره ای
|
تعداد پست ها : 353
|
تاریخ عضویت : شهریور 1388 

تابع log : این تابع لگاریتم طبیعی یک عدد را به دست می آورد.

لگاریتم طبیعی : لگاریتمی است که پایه آن e است که ثابت مشخصی است که تقریباً برابر 2.718281828 است.

تابع log10 : لگاریتم عدد را بر مبنای 10 به دست می آورد.

 

مثال :

<?php
// result: "Natural log of 6 is 0.69314718056. "
$logBaseE = log(6);
echo "Natural log of 6 is $logBaseE. <br>";
// result: "Base10 log of 100 is 2"
$logBase10 = log10(100);
echo "Base10 log of 100 is $logBase10.";

?>

خروجی :

Natural log of 6 is 1.7917594692281.
Base10 log of 100 is 2.

 

sahel_007 کاربر نقره ای
|
تعداد پست ها : 353
|
تاریخ عضویت : شهریور 1388 

تابع log : این تابع لگاریتم طبیعی یک عدد را به دست می آورد.

البته در تابع log  می توانید با مشخص کردن مبنا در این تابع لگاریتم عدد را بر هر مبنای به دست آورید که آرگومان اول تابع عدد و آرگومان دوم مبنای لگاریتم است.

 

مثال :

<?php
// result: "Natural log of 6 is 0.69314718056. "
$logBaseE = log(6);
echo "Natural log of 6 is $logBaseE. <br>";

// result: "Base10 log of 100 is 2"
$logBase10 = log10(100);
echo "Base10 log of 100 is $logBase10.";


$logBase2 = log(64, 8);
echo "Octal log of 64 is $logBase2";
?>

خروجی :

Natural log of 6 is 1.7917594692281.
Base10 log of 100 is 2.
Octal log of 64 is 2

در تابع اول لگاریتم طبیعی عدد 6 به دست آمده و در تابع دوم لگاریتم 100 بر مبنای 10 که 10 است را چاپ می کند و تابع سوم لگاریتم 64 را بر مبنای 8 که 2 است را به دست می آورد شما می توانید لگاریتم را بر هر مبنای به دست آورید.

sahel_007 کاربر نقره ای
|
تعداد پست ها : 353
|
تاریخ عضویت : شهریور 1388 

تابع sin : تابع محاسبه سینوس، وروری به شکل رادیان یا درجه است.

تابع cos : تابع محاسبه کسینوس است.

تابع   tan   : تابع محاسبه تانژانت است.

 

تابع   asin   : تابع محاسبه آرک سینوس است.

تابع   acos   : تابع محاسبه آرک کسینوس است.

تابع   atan   : تابع محاسبه آرک تانژانت است.

 

تابع sinh : تابع محاسبه سینوس هیپربولیک (هذلولی)  است.

تابع   cosh   : تابع محاسبه کسینوس هیپربولیک (هذلولی)  است.

تابع   tanh   : تابع محاسبه تانژانت هیپربولیک (هذلولی)  است.

 

مثال :

<?php

$angle = 45;

// محاسبه سينوس

// result: "Sine: 0.850903524534 "

$sine = sin($angle);

echo "Sine: $sine <br>";

 

// محاسبه کسينوس

// result: "Cosine: 0.525321988818 "

$csine = cos($angle);

echo "Cosine: $csine <br>";

 

// محاسبه تانژانت

//result: "Tangent: 1.61977519054 "

$tangent = tan($angle);

echo "Tangent: $tangent <br>";

 

// محاسبه آرک سينوس

// result: "Arc sine: -1.#IND "

$arcSine = asin($angle);

echo "Arc sine: $arcSine <br>";

 

// محاسبه آرک کسينوس

//result: "Arc cosine: -1.#IND "

$arcCsine = acos($angle);

echo "Arc cosine: $arcCsine <br>";

 

// محاسبه آرک تانژانت

//result: "Arc tangent: 1.54857776147 "

$arcTangent = atan($angle);

echo "Arc tangent: $arcTangent <br>";

 

// محاسبه سينوس هذلولي

//result: "Hyperbolic sine: 1.74671355287E+019 "

$hypSine = sinh($angle);

echo "Hyperbolic sine: $hypSine <br>";

 

// محاسبه کسينوس هذلولي

//result: "Hyperbolic cosine: 1.74671355287E+019 "

$hypCsine = cosh($angle);

echo "Hyperbolic cosine: $hypCsine <br>";

 

// محاسبه تانژانت هذلولي

//result: "Hyperbolic tangent: 1 "

$hypTangent = tanh($angle);

echo "Hyperbolic tangent: $hypTangent <br>";

?>

خروجی :

Sine: 0.85090352453412
Cosine: 0.52532198881773
Tangent: 1.6197751905439
Arc sine: NAN
Arc cosine: NAN
Arc tangent: 1.5485777614682
Hyperbolic sine: 1.7467135528743E+19
Hyperbolic cosine: 1.7467135528743E+19
Hyperbolic tangent: 1