PDA

View Full Version : سوال: جداسازی URL



milworm
پنج شنبه 17 تیر 1389, 10:46 صبح
سلام
چطور میشه قسمتهایی از یک url را جدا کرد.

مثال:


http://www.test.com/index?q=saman&lang=en&start=20&su=link

$q=saman
$start=20

صابر طهماسبی
پنج شنبه 17 تیر 1389, 12:19 عصر
باید 3مرحله را طی کنید :



<?php
$url = 'http://username:password@hostname/path?arg=value#anchor';

print_r(parse_url($url));

echo parse_url($url, PHP_URL_PATH);
?>
/*نتیجه کد بالا به صورت زیر است :
Array
(
[scheme] => http
[host] => hostname
[user] => username
[pass] => password
[path] => /path
[query] => arg=value
[fragment] => anchor
)

*/
همانطور که مشاهده کردید تابع parse_url یک آرایه را برگشت می دهد که url مورد نظر را تکه تکه کرده است ما باید ایندکس query آرایه حاصل را دوباره تجزیه کنیم این کار را با تابع explode یا split انجام می دهیم برای مثال استفاده از explode به صورت زیر است(این تابع یک رشته و یک کاراکتر جداکننده را می گیرد و بر اساس کاراکتر رشته تکه تکه کرده و در آرایه قرار داده و بازگشت می دهد) :

مرحله 2(با url شما) :



<?php
$url = 'http://www.test.com/index?q=saman&lang=en&start=20&su=link';

$result=parse_url($url);

$arr=explode('&',$result['query']);

print_r($arr);
?>نتیجه :

Array
(
[0] => q=saman
[1] => lang=en
[2] => start=20
[3] => su=link
)
و در پایان هرکدام از عناصر آرایه ی قبلی را مجددا explode می کنیم:
کد نهایی :



<?php
$url = 'http://www.test.com/index?q=saman&lang=en&start=20&su=link';

$result=parse_url($url);

$arr=explode('&',$result['query']);

$tmp=array();
foreach($arr as $item)
$tmp[]=explode('=',$item);

print_r($tmp);
?>
نتیجه :



Array
(
[0] => Array
(
[0] => q
[1] => saman
)

[1] => Array
(
[0] => lang
[1] => en
)

[2] => Array
(
[0] => start
[1] => 20
)

[3] => Array
(
[0] => su
[1] => link
)

)