سلام
بعد از چند ماه دوباره یه پست ارسال کنم شاید دستم راه افتاد 😀
الان مجبور شدم که یک اسکریپت ساده crawler بسازم که بتونه داخل وب سایت گردش کنه و محتوای صفحه رو ببینه
خب قصد دارم یک فانکشن ساده بسازم که یک ورودی آدرس وی سایت بگیره و بره داخل اون بگرده و عنوان + متا تگ توضیحات رو ببینه
من نمیخوام اون مقادیر رو جایی ذخیره کنم اما شما اگر خواستید اینکار رو میتونید انجام بدین
این فانکشن یک ورودی دیگه هم ازتون میخواد که عمق گردش صفحات رو مشخص میکنه . یعنی شما مشخص میکنید که توی هر صفحه اگر لینکی دید چه تعدادی از اون رو باز کن و بره داخلش که من پیشفرض روی ۲ قرار دادم ( هر چی این عدد بیشتر باشد طبیعتا زمان بیشتری هم صرف اجرای اسکریپت میشه )
<?php function crawl_page($url, $depth = 2) { static $seen = array(); if (isset($seen[$url]) || $depth === 0) { return; } $seen[$url] = true; $dom = new DOMDocument('1.0'); @$dom->loadHTMLFile($url); $data = implode("", file($url)); preg_match ("/<title>([^`]*?)<\/title>/", $data, $match); $title = $match[1]; $metaTags = get_meta_tags($url); $description = $metaTags['description']; $anchors = $dom->getElementsByTagName('a'); foreach ($anchors as $element) { $href = $element->getAttribute('href'); if (0 !== strpos($href, 'http')) { $path = '/' . ltrim($href, '/'); if (extension_loaded('http')) { $href = http_build_url($url, array('path' => $path)); } else { $parts = parse_url($url); $href = $parts['scheme'] . '://'; $href .= $parts['host']; $href .= dirname($parts['path'], 1).$path; } } crawl_page($href, $depth - 1); } } crawl_page("https://YOURSITE.COM/", 2);
الان اگر جای YOURSITE.COM آدرس مد نظرتون رو وارد کنید و اسکریپت رو اجرا کنید ، توی متغییر $title عنوان صفحه رو دارید و داخل متغییر $description محتوای تگ توضیحات رو دارید
البته این اسکریپت خیلی ساده هست و شما میتونید خیلی بهترش کنید اما در حد ساخت یک sitemap generator کوجیک برای سایتتون میتونه مفید باشد
پاینده و پیروز باشید 😉