راسخون

بررسی توابع PHP

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

 

در این تایپیک توابع مهم php مورد بررسی قرار می گیرد.

 

و سعی می کنم کوتاه باشه منبع اصلی مثالها مورد استفاده سایت php.net و w3schools.com و ...  است.

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

تابع substr : این تابع برای کوتاه کردن و برداشتن کلمات یا خطوط یک متن استفاده می شود. کاربرد عمده این تابع در خلاصه مطلب برداشتن و ادامه مطلب دادن به یک پست است.


مثال :

<?php


?>

خرو جی :

reza
Mohamad

 

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


مثال :

 

<?php

?>


خروجی :

abcd

abcde

 خط اول : از کارکتر اول شروع و 4 کاراکتر ار انتخاب می کند.

 خط دوم : با چاپ br ، یک خط به پایین رفته و دستور بعدی سپس چاپ می شود برای اینکه دو خروجی به هم نچسبند.

خط سوم: از کاراکتر اول شروع و مقدار بعدی چون منفی یک است از انتهای رشته شروع و کاراکتر آخر را در نظر نگرفته و حذف می کند.


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

تابع strrev : این تابع رشته و متن دریافتی را برعکس می کند.

 

مثال :

 

<?php


?>

خروجی : ten.noohkesar//:ptth

 

این تابع رشته بالا را به صورت معکوس تبدیل می کند ولی این تابع با فارسی مشکل دارد برای معکوس کردن متن فارسی از یک تابع دیگر استفاده می شود.

 

حل مشکل برعکس کردن متن فارسی : برای این کار نمی توانید از تابع strrev استفاده کنید و از تابع زیر استفاده می شود.

 

 

<?php

?>

خروجی : نوخسار تیاس

 

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

تابع str_repeat : این تابع رشته ای که می گیرد را تکرار می کند.

 

مثال :

 

<?php

?>


خروجی : °~ °~ °~ °~ °~ °~ °~ °~ °~ °~


این تابع دو پارامتر دارد: 1- پارامتر اول، رشته ورودی را می گیرد. 2- پارامتر دوم، تعداد تکرار رشته را مشخص می کند.

 

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

 

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

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

 

مثال 1 :

<?php

?>

 

خروجی : 97

 

مثال 2 :

 

<?php

?>

 

خروجی : A

 

 مثال 3 : معادل کاراکتری عدد اسکی بین 97 تا 123 را چاپ کنید.

 

<?php


?>

 

خروجی : a b c d e f g h i j k l m n o p q r s t u v w x y z

 

همین طور که می دانید معادل کاراکتری عدد اسکی 97 تا 123 حروف الفبای کوچک انگلیسی است که در یک حلقه با تابع chr چاپ شده سپس یک فاصله بین حروف چاپ می شود.    

 

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

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

 

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

 

<?php


?>

 

خروجی : Array ( [0] => In [1] => the [2] => na [3] => me [4] => of [5] => god )
In <=[0]
the<=[1]
na<=[2]
me <=[3]
of <=[4]
god<=[5]

 

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

در حلقه for مقدار count طول آرایه را بر می گرداند. بقیه هم مشخص است.

 

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

تابع explode : این تابع بر اساس جدا کننده مشخص شده یک رشته را به چندین قسمت جدا کرده و خروجی را درون یک آرایه برمی گرداند.

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

 

مثال :

 

<?php

?>

خروجی :

butter
milk
sugar
salt

 

در تابع explode ، بر اساس جدا کننده "," رشته بالا به چهار رشته جداگانه تقسیم شده و داخل یک آرایه ذخیره می شود سپس در حلقه foreach مقادیر ذخیره شده چاپ می شود .

 

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

تابع parse_url :  يک URL دریافت کرده و آرايه اي حاوي اجزاي آدرس خروجی اش است اجزا ""آدرس شامل قسمتهای زیر:

  • scheme: همون http يا https يا ftp و غيره
  • host: دامنه اصلي مثل rasekhoon.net
  • port: پورت که
  • user: نام کاربری username
  • pass: رمز يا password
  • path: مسير آدرس بعد از دامين
  • query: کوئري يعني کاراکترهاي بعد از علامت "?"
  • fragment: يا hash يا کاراکترهايي که بعد از علامت "#" هستند

 

مثال :

 

<?php


?>

 

خروجی :

scheme: http
host: www.melonfire.com
port: 80
path: /community/columns/trog/article.php
query: id=79&page=2

 

تابع parse_url، آدرس را گرفته و اجزاء آن را در آرایه ای قرار می دهد سپس در حلقه foreach اندیس آرایه و مقدار آن را چاپ می کند. وقتی که بخواهیم به یک جزء آن دسترسی داشته باشیم مثلا port می توانیم نام آرایه با اندیس آن که port است استفاده کنیم.

مانند:

که فقط پورت آدرس چاپ می شود.

 

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

 

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

 

مثال : در رشته زیر علی را یافته و به جای آن احمد را جایگزین کند.

 

<?php

?>

خروجی : Ahmad says hello to reza

 

مثال 2 : در این مثال چندین حرف از رشته حذف می شود.

 

<?php

?>

خروجی : Hll Wrld f PHP

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

 

مثال 3 :

 

<?php

?>

خروجی : You should eat pizza, beer, and ice cream every day

در رشته phrase  مقادیر آرایه healthy یافت شده و با مقادیر آرایه yummy جایگزین می شود.

البته مثالهای زیادی تو سایت php.net است که می توانید مطالعه کنید.

 

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

 

تابع preg_replace : این تابع مانند تابع str_replace ، یک یا چند کاراکتر یا حرف را در رشته ورودی یافته و با مقادیر مورد نظر جایگزین می کند تفاوت این تابع با str_replace ، قدرت و انعطاف بیشتر و جایگزینی همزمان چندین کاراکتر با استفاده از علائم منظم است.

 

مثال1 :

 

<?php
//تعریف رشته
$string = 'The quick brown fox jumped over the lazy dog.';
$patterns = array();
$patterns[0] = '/quick/';
$patterns[1] = '/brown/';
$patterns[2] = '/fox/';
$replacements = array();
$replacements[2] = 'bear';
$replacements[1] = 'black';
$replacements[0] = 'slow';
echo preg_replace($patterns, $replacements, $string);
?>

 

 

خروجی : The bear black slow jumped over the lazy dog

ابتدا یک رشته تعریف شده سپس آرایه patterns تعریف شده است، آرایه مقداردهی شده و آرایه replacements هم همین طور تعریف و مقداردهی شده است سپس در تابع preg_replace در آرگومان اول مقادیر آرایه patterns را در رشته string یافته سپس با مقادیر آرایه replacements جایگزین می کند.

در آرایه ها جایگزینی به ترتیب مقدار دهی آرایه است و با اندیس آرایه کاری ندارد.

 

 

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

تابع sizeof : این تابع شمارش طول آرایه (تعداد خانه های آرایه) را انجام می دهد. وقتی که طول آرایه را نداریم و می خواهیم از حلقه for استفاده کنیم این تابع استفاده می شود.

 

مثال :

 

<?php

?>

خروجی :

Size of array is : 4

 

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

 

architect0811 کاربر طلایی1
|
تعداد پست ها : 6050
|
تاریخ عضویت : خرداد 1391 

سلام خدمت دوست عزیز

واقعا مطالب کاربردی هستش

ممنون

 

 

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

تابع implode : این تابع یکی از توابع مهم پی اچ پی است و برعکس تابع explode که یک رشته را گرفته و بر اساس جداکننده ، کار جداسازی را انجام داده و خروجی یک  آرایه است  تابع implode یک آرایه را گرفته و خروجی آن یک رشته است.

 

 

implode(آرایه , جدا کننده ); 
خروجی تابع : رشته 

مثال 1 : آرایه ای را گرفته و به یک رشته تبدیل کند.

 

<?php
         $arr = array('Hello','World!','Beautiful','Day!');
         echo implode(" ",$arr);
?>

خروجی :

 

Hello World! Beautiful Day!

 

تابع implode بر اساس جدا کننده که فاصله است عناصر آرایه را به رشته تبدیل می کند. اگر جدا کننده مثلا خط فاصله بود بین عناصر آرایه خط فاصله قرار می گرفت.

 

مثال 2 : آرایه را گرفته سپس بر اساس جدا کننده در خروجی یک رشته چاپ می کند.

 

<?php
//تعریف آرایه
$array 
= array('lastname''email''phone');
// براساس جدا کننده که ویرگول است آرایه را گرفته سپس تبدیل به رشته می کند
$comma_separated implode(" ~~> "$array);
//result: zero ~~> one ~~> two
echo $comma_separated;

?>

خروجی :

 

zero ~~> one ~~> two

 

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

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

ورودی تابع آرایه ~~> خروجی تابع آرایه

چهار مشخصه و آرگومان دارد، عبارتند از :

  • مشخصه اول : نام آرایه ورودی

 

  • مشخصه دوم : نقطه شروع برش، اگر مثبت باشد از اول شروع مي شود و اگر منفي باشد از آخر آرایه.

 

  • مشخصه سوم : تعداد خانه های از آرایه که باید جدا شود.

 

  • مشخصه چهارم : و بالاخره مهمترین مشخصه،  دو حالت true , false دارد که پیش فرض false است و اگر true باشد مقدار اندیسی که در آرایه ورودی دارد را برای آرایه خروجی در نظر می گیرد. مثلا اگر اندیس یک خانه آرایه 5 باشد در آرایه جدید هم همین اندیس را خواهد داشت ولی در غیر این صورت اندیس های آرایه خروجی از صفر شروع می شود.


ساختار تابع :

 

array_slice(array,start,length,preserve)
array_slice(وضعیت ذخیره اندیس,طول جدا کردن,اندیس شروع آرایه,نام آرایه)

 

مثال : آرایه ای را تعریف و قسمتی از آن را چاپ کند.

 

<?php
    // تعریف آرایه
    $a=array(0=>"Ali",1=>"Reza",2=>"Hasam",3=>"Amin",4=>"Mohamad");
    //  چاپ آرایه با توجه به اندیس شروع و طول پیمایش آرایه
    print_r(array_slice($a,2,3));
    echo "<br>";
    print_r(array_slice($a,2,3,true));
    echo "<br>";
    print_r((array_slice($a,-2,2));
?>

خروجی

 

Array ( [0] => Hasam [1] => Amin [2] => Mohamad )
Array ( [2] => Hasam [3] => Amin [4] => Mohamad )
Array ( [0] => Amin [1] => Mohamad )

ابتدا آرایه تعریف شده و در اولین تابع مشخصه اول، نام تابع و مشخصه دوم، اندیس شروع که 2 است و مشخصه سوم، طول پیمایش آرایه که 3 است. تابع از اندیس دوم که حسن است شروع و سه خانه آرایه را پیمایش و در آرایه خروجی با اندیس 0 تا 2 ذخیره می کند. سپس یک br چاپ می شود تا یک خط به پایین برود.

تابع دوم هم مانند خط قبل است با این تفاوت که وضعیت ذخیره اندیس true است که باعث می شود اندیس آرایه ورودی در آرایه خروجی حفظ شود.

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

 

architect0811 کاربر طلایی1
|
تعداد پست ها : 6050
|
تاریخ عضویت : خرداد 1391 

 


 
 

سلام خدمت دوست گرامی

لطف میکنید منبع رو هم ذکر کنید.

با تشکر