گرفتن رتبه الکسا در php با دو روش XML و عبارت های با قاعده (Regular Expression) بسیار ساده است . همانطور که میدانید که یکی از معیارها برای رقابت بین سایت ها رنک یا رتبه ی آنها در جهان یا در کشور خودشان ، الکسا Alexa است! یکی از سایت های معتبر جهانی که این رتبه رو ارائه میده alexa هست , شما میتونید رتبه ی خیلی از وب سایت ها رو توی الکسا ببینید و اونا رو از لحاظ بازدید مقایسه کنید .
وظیفه اصلی الکسا ، رتبه بندی وبسایتها از نظر میزان بازدید نسبت به یکدیگر است. در واقع این روش مانند یک کنکور عمل میکند، مهم نیست که هر سایت روزانه چه تعداد بازدید کننده دارد، بلکه مهم این است که تعداد این بازدید نسبت به سایر سایتها چگونه بوده و در واقع در مقایسه با سایرین این رتبه بندی انجام میشود.
برای اینکه بیشتر با الکسا و همچنین نحوه کار آن و همچنین تحلیل قسمت های مختلف سایت الکسا آشنا شوید ، پیشنهاد می کنم مقاله الکسا چیست و چگونه کار میکند را بخوانید
در این آموزش قصد داریم به شما نحوه گرفتن رتبه الکسا در php به دو روش مختلف را نشان بدیم . با استفاده از api وب سرویس الکسا که به رایگان در اختیار برنامه نویسان قرار گرفته است ، می تواند خروجی رنک الکسا سایت ها را چه در سطح جهانی (global) چه کشوری بدست آورید و به روش های مختلف در سایت به عنوان یک ابزار آنلاین در کنار دیگر خدمات به کاربران نمایش بدید.
۱- گرفتن رتبه الکسا در php با کلاس SimpleXMLElement :
فایل alexa.php :
برای ارسال درخواست url به سایت و گرفتن رتبه الکسا در php از curl استفاده کردیم :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
<?php // NetParadis // http://netparadis.com function get_rank($domain){ $url = "http://data.alexa.com/data?cli=10&dat=snbamz&url=".$domain; //Initialize the Curl $ch = curl_init(); //Set curl to return the data instead of printing it to the browser. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,2); //Set the URL curl_setopt($ch, CURLOPT_URL, $url); //Execute the fetch $data = curl_exec($ch); //Close the connection curl_close($ch); $xml = new SimpleXMLElement($data); //Get popularity node $popularity = $xml->xpath("//POPULARITY"); //Get the Rank attribute $rank = (string)$popularity[0]['TEXT']; //get country node $country = $xml->xpath("//COUNTRY"); $name = (string)$country[0]['NAME']; $country_rank = (string)$country[0]['RANK']; return ['global'=>$rank,$name=>$country_rank]; } ?> |
فایل index.php :
در این فایل ، ما فایل alexa.php را فراخوانی میکنیم و با استفاده از تابع get_rank رتبه جهانی و رتبه کشوری را در صفحه چاپ می کنیم
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
<?php include_once 'alexa.php'; ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>alexa rank</title> <style> div{ max-width:350px; margin:0px auto; border:3px solid #F90; background: #2E9FFF; color:#FFF; text-align: center; font:normal 100% tahoma; } </style> </head> <body> <div> <h1>--Alexa Rank - NETParadis--</h1> <?php //get alexa data $data=get_rank('http://aparat.com'); echo "<p>رتبه در جهان : ".$data['global']."</p>"; end($data); $country_name=key($data); $country_rank=current($data); echo "<p> رتبه در کشور ".$country_name.": ".$country_rank." </p>"; ?> </div> </body> </html> |
۲ – گرفتن رتبه الکسا در php با عبارت ها باقاعده (Regular expression)
در کد زیر ما با استفاده از تابع file_get_contents کد های html صفحه مورد نظر که شامل رتبه بندی سایت است , دریافت می کنیم و بعد با تابع preg_match و عبارت های باقاعده رتبه مورد نظر را استخراج و به کاربر نمایش می دهیم
1 2 3 4 5 6 7 8 9 10 11 |
<?php header('Content-Type: text/html; charset=utf-8'); $url = file_get_contents('http://data.alexa.com/data?cli=10&dat=snbamz&url=http://google.com'); //Alexa Rank preg_match('/\<popularity url\="(.*?)" text\="([0-9]+)" source\="panel"\/\>/si', $url, $matches); $globalrank = ($matches[2]) ? $matches[2] : 0; echo "زتبه جهانی : ".$globalrank; ?> |
با آموزش گرفتن رتبه الکسا در php , دیدید با دو روش مختلف به چه سادگی رنک و رتبه سایت را دریافت و به کاربر نمایش دادیم . هر گونه مشکلی در پیاده سازی کدها داشتید , از قسمت نظرات با ما در ارتباط باشید . سریعا پاسخگوی سوالات شما هستیم .
برای دانلود سورس کد گرفتن رتبه الکسا در php از قسمت زیر اقدام کنید
موفق و پیروز باشید
سلام خسته نباشید
من اینو اوردم روی localhost بعد این ارور میده میشه کمکم کنید
Warning: SimpleXMLElement::__construct(): Entity: line 1: parser error : Start tag expected, ‘__construct(‘Okay’) #1 C:\xampp\htdocs\Alexa\php\1\index.php(26): get_rank(‘https://www.dig…’) #2 {main} thrown in C:\xampp\htdocs\Alexa\php\1\alexa.php on line 17
سلام. به خاطر کاراکتر Bom ممکنه باشه.
فایل خود رو با نوت پد ++ و Encoding بدون Bom ذخیره کنید
سلام من امتحان کردم تنها اعداد رو از آلکسا دریافت نمیکنه ؟
روی ورژن ۵٫۶ تا ۸ تست کردم که روش curl هم فعال هستش ولی نمایش نمیده !!
۱۰۰% میدونم که مشکل از یک ماژول یا پلاگین هستش که باید روی سرورم نصب کنم ولی نمیدونم چیه ؟
میشه راهنماییم کنید ؟
ممنون
سلام.
allow_url_fopen از سمت هاست شما بسته شده و برای همین file_get_contents کار نمیکنه باید با crul اینو جایگزین کنید
https://netparadis.com/php-curl
سلام، این api ارور دارد:
[۲۵-Nov-2020 12:55:32 UTC] PHP Warning: SimpleXMLElement::__construct(): Entity: line 1: parser error : Start tag expected, ‘<‘ not found in /home/citizen1/public_html/siteinc.ir/api/alexa.php on line 17
[۲۵-Nov-2020 12:55:32 UTC] PHP Warning: SimpleXMLElement::__construct(): Okay in /home/citizen1/public_html/siteinc.ir/api/alexa.php on line 17
[۲۵-Nov-2020 12:55:32 UTC] PHP Warning: SimpleXMLElement::__construct(): ^ in /home/citizen1/public_html/siteinc.ir/api/alexa.php on line 17
[۲۵-Nov-2020 12:55:32 UTC] PHP Fatal error: Uncaught Exception: String could not be parsed as XML in /home/citizen1/public_html/siteinc.ir/api/alexa.php:17
Stack trace:
#۰ /home/citizen1/public_html/siteinc.ir/api/alexa.php(17): SimpleXMLElement->__construct(‘Okay’)
#۱ /home/citizen1/public_html/siteinc.ir/api/index.php(26): get_rank(‘http://aparat.c…’)
#۲ {main}
thrown in /home/citizen1/public_html/siteinc.ir/api/alexa.php on line 17
لطفا راه حل را بفرمایید.
سلام. بنده تست کردم هیچ مشکلی نداره. بهتره آدرس دامنه رو بدرستی با http وارد کنید و همچنین سورس کامل رو از باکس دانلود دریافت و استفاده کنید.
موفق باشید.
برادر عزیزم من هم از باکس بالا فایل ها را گرفتم و هم تغییری در آن ندادم
در هاستم بارگذاری کردم و وقتی آدرس را تایپ و جستجو می کنم
نتیجه می شود ارور های زیر و تمام.
[۲۶-Nov-2020 23:39:09 UTC] PHP Warning: SimpleXMLElement::__construct(): Entity: line 1: parser error : Start tag expected, ‘<‘ not found in /home/citizen1/public_html/siteinc.ir/api/alexa.php on line 17
[۲۶-Nov-2020 23:39:09 UTC] PHP Warning: SimpleXMLElement::__construct(): Okay in /home/citizen1/public_html/siteinc.ir/api/alexa.php on line 17
[۲۶-Nov-2020 23:39:09 UTC] PHP Warning: SimpleXMLElement::__construct(): ^ in /home/citizen1/public_html/siteinc.ir/api/alexa.php on line 17
[۲۶-Nov-2020 23:39:09 UTC] PHP Fatal error: Uncaught Exception: String could not be parsed as XML in /home/citizen1/public_html/siteinc.ir/api/alexa.php:17
Stack trace:
#۰ /home/citizen1/public_html/siteinc.ir/api/alexa.php(17): SimpleXMLElement->__construct(‘Okay’)
#۱ /home/citizen1/public_html/siteinc.ir/api/index.php(26): get_rank(‘http://aparat.c…’)
#۲ {main}
thrown in /home/citizen1/public_html/siteinc.ir/api/alexa.php on line 17
باور کنید هاست با هاست هیچ فرقی ندارد
فایل alexa.php یک یا چند ارور دارد برادر من.
الان باز تست شد هیچ مشکلی نداره. حتی به خودتون زحمت ندادید دانلود کنید و هر دو راه رو تست کنید که یکی با regex هست و یکی با xml

ورژن php تست شده ۵٫۶ و ۷٫۳