הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   חייב פונצקציה פשוטה ב PHP! (https://hosts.co.il/forums/showthread.php?t=86994)

dor77 23-12-10 22:32

חייב פונצקציה פשוטה ב PHP!
 
שלום..
אני חייב פונקציה בPHP.
נגיד ואני נותן לו כתובת כזו:http://www.google.co.il
אני צריך שהוא יחזיר לי:google.co.il
נגיד ונתתי לו כתובת כזו:http://news.walla.co.il
אני צריך שהוא יחזיר:walla.co.il
או למקרה שהוא מקבל כזו:
http://www.youtube.com/watch?v=GfoUg...ure=grec_index
אני צריך שהוא יחזיר: youtube.com
בקיצור, אני צריך רק את הדומיין עצמו, בלי כל הדברים לפני ואחרי.
מקווה שזה אפשרי ואם לא אז משהו קרוב.
זה ממש יעזור לי, תודה!

Shay Ben Moshe 23-12-10 22:41

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

dor77 23-12-10 22:58

תודה..זה נראה משה נחמד אבל זה לא עושה מה שביקשתי..זה לא מפרק את הקישור כמו שאני רוצה..
הנה למשל:

PHP קוד:

<?php
$url 
'http://www.google.co.il';

print_r(parse_url($url));

echo 
parse_url($urlPHP_URL_PATH);
?>

זה מה שיוצא:
Array ( [scheme] => http [host] => www.google.co.il )

תודה רבה.

BlueNosE 23-12-10 22:59

והבעיה איפה?

תוציא כפלט את ערך התא host והכל עובד יופי.


עריכה: אתה יכול גם לשלוח כFLAG את PHP_URL_HOST. זה יעשה בשבילך אפילו את העבודה השחורה שנשארה.

dor77 23-12-10 23:03

אבל איפה בדיוק אני קובע שאני רוצה לקבל את host?
אני גם רוצה לקבל רק google.co.il
בלי www.

Hagaibl 23-12-10 23:15

נתנו לך פה פונקציה אשר מקבל URL כפרמטר ומחזירה מערך של נתונים שהוצאו מן הURL.
במידה ואתה יודע איך לשלוף מידה ספציפי מן מערך פשוט תשלוף את המידה המאוחסן בתא host.

BlueNosE 23-12-10 23:30

ציטוט:

נכתב במקור על ידי dor77 (פרסם 790355)
אבל איפה בדיוק אני קובע שאני רוצה לקבל את host?
אני גם רוצה לקבל רק google.co.il
בלי www.

אז תעיף את הwww עם str_replace/preg_replace/explode/substr או כל פונקציה אחרת שעולה לך בראש.

dor77 24-12-10 00:27

ציטוט:

נכתב במקור על ידי Hagaibl (פרסם 790356)
נתנו לך פה פונקציה אשר מקבל URL כפרמטר ומחזירה מערך של נתונים שהוצאו מן הURL.
במידה ואתה יודע איך לשלוף מידה ספציפי מן מערך פשוט תשלוף את המידה המאוחסן בתא host.

זה מה שאני שואל, איך ניתן לעשות זאת? איפה אני כותב שאני מעוניין בהוסט?

תודה על העזרה מעריך את זה.

Ender 24-12-10 01:29

קוד:

function get_base_domain($url)
{
$url = strtolower($url);
$debug = 0;
$base_domain = '';

// generic tlds (source: http://en.wikipedia.org/wiki/Generic_top-level_domain)
$G_TLD = array(
'biz','com','edu','gov','info','int','mil','name','net','org',
'aero','asia','cat','coop','jobs','mobi','museum','pro','tel','travel',
'arpa','root',
'berlin','bzh','cym','gal','geo','kid','kids','lat','mail','nyc','post','sco','web','xxx',
'nato',
'example','invalid','localhost','test',
'bitnet','csnet','ip','local','onion','uucp',
'co' // note: not technically, but used in things like co.uk
);

// country tlds (source: http://en.wikipedia.org/wiki/Country_code_top-level_domain)
$C_TLD = array(
// active
'ac','ad','ae','af','ag','ai','al','am','an','ao','aq','ar','as','at','au','aw','ax','az',
'ba','bb','bd','be','bf','bg','bh','bi','bj','bm','bn','bo','br','bs','bt','bw','by','bz',
'ca','cc','cd','cf','cg','ch','ci','ck','cl','cm','cn','co','cr','cu','cv','cx','cy','cz',
'de','dj','dk','dm','do','dz','ec','ee','eg','er','es','et','eu','fi','fj','fk','fm','fo',
'fr','ga','gd','ge','gf','gg','gh','gi','gl','gm','gn','gp','gq','gr','gs','gt','gu','gw',
'gy','hk','hm','hn','hr','ht','hu','id','ie','il','im','in','io','iq','ir','is','it','je',
'jm','jo','jp','ke','kg','kh','ki','km','kn','kr','kw','ky','kz','la','lb','lc','li','lk',
'lr','ls','lt','lu','lv','ly','ma','mc','md','mg','mh','mk','ml','mm','mn','mo','mp','mq',
'mr','ms','mt','mu','mv','mw','mx','my','mz','na','nc','ne','nf','ng','ni','nl','no','np',
'nr','nu','nz','om','pa','pe','pf','pg','ph','pk','pl','pn','pr','ps','pt','pw','py','qa',
're','ro','ru','rw','sa','sb','sc','sd','se','sg','sh','si','sk','sl','sm','sn','sr','st',
'sv','sy','sz','tc','td','tf','tg','th','tj','tk','tl','tm','tn','to','tr','tt','tv','tw',
'tz','ua','ug','uk','us','uy','uz','va','vc','ve','vg','vi','vn','vu','wf','ws','ye','yu',
'za','zm','zw',
// inactive
'eh','kp','me','rs','um','bv','gb','pm','sj','so','yt','su','tp','bu','cs','dd','zr'
);


// get domain
if ( !$full_domain = get_url_domain($url) )
{
        return $base_domain;
}

// now the fun
if(substr($full_domain, -1) == ".")
{
        $full_domain = substr($full_domain, 0, -1);
}

// break up domain, reverse
$DOMAIN = explode('.', $full_domain);
if ( $debug ) print_r($DOMAIN);
$DOMAIN = array_reverse($DOMAIN);
if ( $debug ) print_r($DOMAIN);

// first check for ip address
if ( count($DOMAIN) == 4 && is_numeric($DOMAIN[0]) && is_numeric($DOMAIN[3]) )
{
return $full_domain;
}

// if only 2 domain parts, that must be our domain
if ( count($DOMAIN) <= 2 ) return $full_domain;

/*
finally, with 3+ domain parts: obviously D0 is tld
now, if D0 = ctld and D1 = gtld, we might have something like com.uk
so, if D0 = ctld && D1 = gtld && D2 != 'www', domain = D2.D1.D0
else if D0 = ctld && D1 = gtld && D2 == 'www', domain = D1.D0
else domain = D1.D0
these rules are simplified below
*/
if ( in_array($DOMAIN[0], $C_TLD) && in_array($DOMAIN[1], $G_TLD) && $DOMAIN[2] != 'www' )
{
$full_domain = $DOMAIN[2] . '.' . $DOMAIN[1] . '.' . $DOMAIN[0];
}
else
{
$full_domain = $DOMAIN[1] . '.' . $DOMAIN[0];;
}

// did we succeed?
return $full_domain;
}


// get domain from url
function get_url_domain($url)
{
$domain = '';

$_URL = parse_url($url);

// sanity check
if ( empty($_URL) || empty($_URL['host']) )
{
$domain = '';
}
else
{
$domain = $_URL['host'];
}

return $domain;
}


Hagaibl 24-12-10 11:28

אני רואה שאתה לא מבין בתיכנות בPHP כלל.
אז הינה הקוד הפשוט.
לא תקבל יותר מזה, אני חורג פה ממנהגי לחלוטין.
PHP קוד:

<?php
$url 
prase_url("http://www.hosts.co.il/index.php");
echo 
"The domain of this site is:" $url['host'];
?>



כל הזמנים הם GMT +2. הזמן כעת הוא 12:29.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ