چرا نمیخواید از foreach استفاده کنید؟ خوب بالاخره باید روی آیتمهای شیء XML لوپ کنید تا همه نودها رو بگیرید یا نه؟!
باید با همون simplexml که دوستمون گفت روی آیتمها لوپ کنید بعد صفتهای URL و TEXT رو ازشون بگیرید
برای حذف http و www هم اضافه کاری کردید! با یک رجکس معمولی میشه دامنه رو از توی آدرس در آورد دیگه نیاز نیست دوباره با str_replace اینا رو حذف کرد.
قسمت اولش رو که گفتید نمیخواید لوپ بشه بیشتر توضیح بدید دلیلش چیه. جواب قسمت دوم هم این کد هست:
[php]
$url = 'http://www.domain.com/index.html?var=whatever';
if(preg_match('@^(?:(?:http|https)://)?(?:.*?\.)?([a-zA-z0-9\-]+\.[a-zA-z]{2,5})@', $url, $matches)) {
echo 'Domain name is: ', $matches[1];
} else {
echo 'No domain name found!';
}
[/php]
با این آدرسها هم تست کردم جواب میده:
کد:
http://www.domain.com/index.html?var=whatever
http://domain.com/index.html?var=whatever
www.domain.com/index.html?var=whatever
domain.com/index.html?var=whatever
http://www.domain.com
www.domain.com
قاعدتاً باید با همه نوع آدرسی کار کنه