سئو، سئو و سئو!
سئو جدیداً به یکی از دغدغههای جدی علی تبدیل شده است. او دائماً صفحات وبسایت خود را چک میکند تا اشتباهی از او سر نزده باشد که باعث افت رنک وبسایتش شود. به همین دلیل، علی بهصورت جدی در تلاش است تا برنامهای بنویسد تا صفحات سایتش را از لحاظ سئو بررسی کند.
او از شما برای نوشتن چنین برنامهای کمک خواسته است.
جزئیات پروژه
پروژهی اولیه را از این لینک دانلود کنید.
پروژهی اولیه شامل فایلی با نام seoScore.php
است که تابعی با نام seoScore
در آن تعریف شده. امضای این تابع بهصورت زیر است:
function seoScore(string $html): int
{
// TODO: Implement
}
این تابع باید با دریافت محتویات HTML یک صفحه در قالب یک رشته، آن را از لحاظ سئو بررسی کند و امتیازی در قالب یک عدد صحیح برگرداند.
برای بررسی صفحه و اختصاص امتیاز به آن باید به نکات زیر توجه کنید:
- اگر صفحه دارای تگ
title
بود و تعداد کاراکترهای محتوای این تگ کوچکتر یا مساوی ۶۰ بود، ۱۰ امتیاز و اگر بیشتر از ۶۰ کاراکتر بود، ۷ امتیاز اضافه شود. تضمین میشود که این تگ در صورت وجود، بدون attribute و به شکل زیر خواهد بود:
<title>Page Title</title>
- اگر صفحه دارای تگ
meta
با نامdescription
بود و تعداد کاراکترهای محتوای ویژگیcontent
این تگ کوچکتر یا مساوی ۱۶۰ بود، ۱۰ امتیاز و اگر بیشتر از ۱۶۰ کاراکتر بود، ۷ امتیاز اضافه شود. تضمین میشود که این تگ در صورت وجود، با این ترتیب از attribute ها خواهد بود:
<meta name="description" content="description-content">
- اگر صفحه دارای تگ
meta
با نامviewport
بود، ۱۰ امتیاز اضافه شود. تضمین میشود که این تگ در صورت وجود، با این ترتیب از attribute ها خواهد بود:
<meta name="viewport" content="viewport-content">
- اگر صفحه دارای تگ
meta
با نامrobots
بود، ۱۰ امتیاز اضافه شود. تضمین میشود که این تگ در صورت وجود، با این ترتیب از attribute ها خواهد بود:
<meta name="robots" content="robots-content">
- اگر صفحه دارای تگ
meta
با ویژگیcharset
بود، ۱۰ امتیاز اضافه شود. تضمین میشود که این تگ در صورت وجود، با این ترتیب از attribute ها خواهد بود:
<meta charset="charset-value">
- اگر صفحه دارای یک تگ
h1
بود، ۱۰ امتیاز و اگر بیشتر از یک تگh1
بود، ۷ امتیاز اضافه شود. تضمین میشود که این تگ در صورت وجود، بدون attribute است. - اگر صفحه دارای تگهای
h2
یاh3
بود، به ازای هر یک از این تگها ۵ امتیاز اضافه شود (تعداد تگهایh2
وh3
اهمیتی ندارد). تضمین میشود که این تگها در صورت وجود، بدون attribute هستند. - اگر صفحه دارای تگهای معنایی بود، به ازای هر یک از این تگها ۱۰ امتیاز اضافه شود (تگهای معنایی یا semantic tags در این سؤال شامل
header
،section
وfooter
است؛ تعداد دفعات تکرار آنها اهمیتی ندارد). تضمین میشود که این تگها در صورت وجود، بدون attribute هستند.
نکات
- ممکن است در ابتدا یا انتهای محتویات تگها و attribute ها whitespace آمده باشد. برای بررسی طول این متون، باید whitespace ابتدا و انتها را نادیده بگیرید (آنها را
trim
کنید). - ممکن است محتویات تگها خالی باشد. برای مثال، اگر یک تگ
footer
بدون محتوا در HTML موجود باشد، باید ۱۰ امتیاز اضافه شود. - تضمین میشود که نام تگها و attribute ها با حروف کوچک انگلیسی هستند.
- تضمین میشود که رشتهی HTML ورودی از نظر سینتکس معتبر است.
- در صورت تمایل، میتوانید توابع و کلاسهای دیگری نیز در فایل
seoScore.php
پیادهسازی کنید.
مثال
پس از پیادهسازی متد seoScore
، با اجرای کد زیر:
<?php
function seoScore(string $html): int
{
// TODO: Implement
}
$html =
'<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Quera</title>
<meta name="description" content="quera-codecup-college-magnet">
<meta name="robots" content="index, follow">
</head>
<body>
<header>
<h1>Quera</h1>
</header>
<section>
<h2>Quera</h2>
<h3>Quera</h3>
<h3>Quera</h3>
<h3>Quera</h3>
</section>
<footer>
<h2>Quera</h2>
</footer>
</body>
</html>';
echo seoScore($html);
خروجی باید بهصورت زیر باشد:
100
آنچه باید آپلود کنید
یک فایل PHP که تابع seoScore
در آن پیادهسازی شده است آپلود کنید.
ارسال پاسخ برای این سؤال