PDA

View Full Version : حذف اضافه های یک آدرس به صورت دقیق.



cpuram
پنج شنبه 21 دی 1391, 00:31 صبح
سلام دوستان این کد رو پیدا کردم که اعتبار سنجی آدرس یک سایت رو انجام بده.
چطوری میتونم اضافه های یک آدرس رو حذف کنم ؟

<?php
function CheckAndValidateUrl($url){
if(filter_var($url, FILTER_VALIDATE_URL))
{

echo'url ok';

}
else
{
echo 'url not ok';
}
}

$url='http://siteurl.com/index.php';
CheckAndValidateUrl($url);
?>


در واقع میخوام به این صورت

siteurl.com
در بیاد و در هر شرایطی درست کار کنه ممنون میشم راهنمایی کنید.

MostafaEs3
پنج شنبه 21 دی 1391, 00:42 صبح
تابع parse_url تا حدودی اینکارو انجام میده . البته www رو باید دستی با str_replace بردارید !

http://php.net/manual/en/function.parse-url.php

siavashsay
پنج شنبه 21 دی 1391, 00:51 صبح
این کد رو نوشتم تست کن !


$url="http://www.site.com/index.php";
$cutStr=preg_replace('/^.*?\w\//', '', $url);
$url=str_replace("http://","",$url);
$url=str_replace("www.","",$url);
$url=str_replace($cutStr,"",$url);
$url=str_replace("/","",$url);
echo $url;

انواع شرایط رو تست کن ببین مشکلاتش چیا هست تا باهم رفعش کنیم !
اما این یکی بهتره باز گمونم

$url="http://www.site.com/index.php";
$url=parse_url($url);
$newUrl=$url['host'];
$newUrl=str_replace("www.","",$newUrl);
echo $newUrl;

cpuram
پنج شنبه 21 دی 1391, 00:53 صبح
فرض کنید اصلا نمیدونم کاربر قراره به چه شکلی url رو وارد کنه. نمیدونم www داره یا نه.

cpuram
پنج شنبه 21 دی 1391, 00:57 صبح
این کد رو نوشتم تست کن !


$url="http://www.site.com/index.php";
$cutStr=preg_replace('/^.*?\w\//', '', $url);
$url=str_replace("http://","",$url);
$url=str_replace("www.","",$url);
$url=str_replace($cutStr,"",$url);
$url=str_replace("/","",$url);
echo $url;

انواع شرایط رو تست کن ببین مشکلاتش چیا هست تا باهم رفعش کنیم !
خیلی ممنونم عالی بود

siavashsay
پنج شنبه 21 دی 1391, 01:05 صبح
فرض کنید اصلا نمیدونم کاربر قراره به چه شکلی url رو وارد کنه. نمیدونم www داره یا نه.
در کل تابع str_replace اگر کاراکتری وجود داشته باشه رو جایگزین میکنه ! اما فقط یک مشکل هست !
اگر سایت کاربر شما مثلا : http://www.sitewww.com باشه تبدیل میشه به site.com پس بهتره کدمون رو تغییر بدیم :


$url="http://www.site.com/index.php";
$cutStr=preg_replace('/^.*?\w\//', '', $url);
$url=str_replace("http:","",$url);
$url=str_replace("//www.","",$url);
$url=str_replace($cutStr,"",$url);
$url=str_replace("/","",$url);
echo $url;

در اینجا اومدیم فقط 2 تا خط رو تغییر دادیم !

$url=str_replace("http:","",$url);
$url=str_replace("//www.","",$url);
چون توی آدرس سایت http: نمیتونه باشه و همینطور //www. اما میتونه www. باشه !
پس با این تغییر گمون نکنم دیگه مشکلی باشه !

cpuram
پنج شنبه 21 دی 1391, 01:05 صبح
$url['host'];

میشه اینو توضیح بدید؟
تشکر.

siavashsay
پنج شنبه 21 دی 1391, 01:10 صبح
اون مربوط میشه به آرایه تابع parse_url که میگه فقط آرایه host رو برگردونه ! که میشه مثلا www.site.com
اما ازون استفاده نکن ! چون بعدش باید www. رو برداری که طبق پست قبلیم گفتم مشکل پیش میاد اگر یک نفر سایتش مثلا http://www.sitewww.com باشه تبدیل میشه به site.com !
پس بهتره از آخرین کدی که دادم استفاده کنی ! یعنی :

$url="http://www.site.com/index.php";
$cutStr=preg_replace('/^.*?\w\//', '', $url);
$url=str_replace("http:","",$url);
$url=str_replace("//www.","",$url);
$url=str_replace($cutStr,"",$url);
$url=str_replace("/","",$url);
echo $url;