رفتن به مطلب
مرورگر پیشنهادی آرساکیا گیم مرورگر های تحت موتور کرومیوم می‌باشد، برای دانلود روی مرورگر انتخابی خود کلیک کنید
Google Chrome Microsoft Edge Ungoogled Chromium Brave Opera GX Opera

Web Prettier Utils - Part 1


ارسال‌های توصیه شده

In the name of God

 

سلاممممممم می ارزم خدمت تمامی دوستان عزیز و گرامی

 

امیدوارم حال یک یکتون خوب باشه، حال دل من... چیز یعنی دلتون بهتر!

 

امروز میخوایم با یه چند تا Utils کاربردی که توسط خودم در دو نسخه ی PHP و JavaScript ساخته شدن آشنا بشیم

این Utils ها هم برای قشنگ تر کردن سایتتون هستن :)

 

اما چه چیزهایی وجود داره داخلش؟

calculateReadingTime - یه تابع برای محاسبه کردن زمان خوندن یک بلاگ

در اکثر سایت های مدرن، این یوتیل کامل استفاده میشه

templateRun - یه تابع برای جدا سازی URL ها از هم و گذاشتنش برای کاربر

مثال:

ورودی:

https://web.example.com/JavadInteger/Blogs/156-Hello-Dear-Users-To-This-Site

خروجی:

<a href="web.example.com/JavadInteger">JavadInteger</a> / 
<a href="web.example.com/JavadInteger/Blogs">Blogs</a> / 
<a href="web.example.com/JavadInteger/Blogs/156-Hello-Dear-Users-To-This-Site">Hello Dear Users To This Site</a>

و خروجی ای که End-User میبینه:

JavadInteger / Blogs / Hello Dear Users To This Site

و روی هرکدوم که کلیک کنه به صفحه ی مربوطه هدایت میشه

slugify - یه تابع برای تبدیل متن به URL

truncateText - متنی برای خلاصه سازی متون

مثال:

(لیمیت تا 50 کاراکتر)

سلام خوبی؟ این یه متن تستی هستش برای اینکه قدرت جواد اینتیجر رو ببینی :)

میشه:

سلام خوبی؟ این یه متن تستی هستش برای اینکه قدرت جواد...

(اما سوال: این 52 کاراکتر شدش، نه 50 کاراکتر، بله! بخاطر اینکه truncateText هوشمندانه trim میکنه و تا آخر کلمه نرسه و فاصله نبینه، trim نمیکنه، فرض کن این شکلی میشد متن:

سلام خوبی؟ این یه متن تستی هستش برای اینکه قدرت جو...

خب این الان یعنی چی؟ زشت میشه دیگه بدیهیا!)

 

خب دیگه، مقدمه چینی نمیکنم اینم کد ها هستن (با مثال کامل):

 

calculateReadingTime - PHP

<?php

function calculateReadingTime(string $text, string $unit): float {
    $wordCount = str_word_count($text);
    $minutes = $wordCount / 200;
    switch ($unit) {
        case 'nanosecond':
            return $minutes * 60 * 1e9;
        case 'millisecond':
            return $minutes * 60 * 1e3;
        case 'second':
            return $minutes * 60;
        case 'minute':
            return $minutes;
        case 'hour':
            return $minutes / 60;
        default:
            return 0.0;
    }
}

// مثال استفاده:
echo calculateReadingTime("این یک متن نمونه است. این بلاگ ۵۰۰ کلمه دارد.", 'minute'); // خروجی: 2.5

 

calculateReadingTime - JS:

function calculateReadingTime(text, unit) {
    const words = text.split(/\s+/).filter(word => word.length > 0);
    const wordCount = words.length;
    const minutes = wordCount / 200;

    switch (unit) {
        case 'nanosecond':
            return minutes * 60 * 1e9;
        case 'millisecond':
            return minutes * 60 * 1e3;
        case 'second':
            return minutes * 60;
        case 'minute':
            return minutes;
        case 'hour':
            return minutes / 60;
        default:
            return 0;
    }
}

// مثال استفاده:
console.log(calculateReadingTime("این یک متن نمونه است. این بلاگ ۵۰۰ کلمه دارد.", 'minute')); // خروجی: 2.5

 

templateRun - PHP:

<?php

function templateRun(string $url, string $template = "<a href=\"ADDRESS[0]\">PATH[0]</a> / <a href=\"ADDRESS[1]\">PATH[1]</a> / <a href=\"ADDRESS[2]\">PATH[2]</a>"): string {
    $parsed = parse_url($url);
    $host = $parsed['host'] ?? '';
    $path = $parsed['path'] ?? '';
    $query = $parsed['query'] ?? '';

    // پردازش مسیرها
    $segments = array_filter(explode('/', $path), 'strlen');
    $processedSegments = [];
    $hrefs = [];

    foreach ($segments as $index => $segment) {
        // جایگزینی کاراکترهای غیر الفبا با فاصله و بزرگ کردن اولین حرف هر کلمه
        $cleanSegment = preg_replace('/[^a-zA-Z0-9]/', ' ', $segment);
        $cleanSegment = ucwords(strtolower($cleanSegment));
        $processedSegments[$index] = $cleanSegment;

        // ساخت آدرس کامل برای هر مسیر
        $pathPart = implode('/', array_slice($segments, 0, $index + 1));
        $hrefs[$index] = $host . '/' . $pathPart;
    }

    // پردازش پارامترهای GET
    $queryParams = [];
    parse_str($query, $queryParams);

    // جایگزینی پلیس هولدر ها در تمپلیت
    $output = $template;
    foreach ($processedSegments as $index => $text) {
        $output = str_replace("PATH[$index]", $text, $output);
        $output = str_replace("ADDRESS[$index]", $hrefs[$index], $output);
    }

    foreach ($queryParams as $key => $value) {
        $output = str_replace("GET[$key]", $value, $output);
    }

    return $output;
}

// مثال استفاده:
echo templateRun(
    "https://web.domain.com/javad/integer/blog/hello-To-Friends",
    "There's <a href='ADDRESS[1]'>PATH[1]</a> in <a href='ADDRESS[0]'>PATH[0]</a>."
);
// خروجی: There's <a href='web.domain.com/javad/integer'>Integer</a> in <a href='web.domain.com/javad'>Javad</a>.

 

templateRun - JS:

function templateRun(url, template = "<a href=\"ADDRESS[0]\">PATH[0]</a> / <a href=\"ADDRESS[1]\">PATH[1]</a> / <a href=\"ADDRESS[2]\">PATH[2]</a>") {
    const parsedUrl = new URL(url);
    const host = parsedUrl.host;
    const path = parsedUrl.pathname;
    const queryParams = new URLSearchParams(parsedUrl.search);

    // پردازش مسیرها
    const segments = path.split('/').filter(Boolean);
    const processedSegments = [];
    const hrefs = [];

    segments.forEach((segment, index) => {
        // جایگزینی کاراکترهای غیر الفبا با فاصله و بزرگ کردن اولین حرف هر کلمه
        let cleanSegment = segment.replace(/[^a-zA-Z0-9]/g, ' ');
        cleanSegment = cleanSegment.toLowerCase().replace(/\b\w/g, c => c.toUpperCase());
        processedSegments[index] = cleanSegment;

        // ساخت آدرس کامل برای هر مسیر
        const pathPart = segments.slice(0, index + 1).join('/');
        hrefs[index] = `${host}/${pathPart}`;
    });

    // جایگزینی پلیس هولدر ها در تمپلیت
    let output = template;
    processedSegments.forEach((text, index) => {
        output = output.replace(new RegExp(`PATH\\[${index}\\]`, 'g'), text);
        output = output.replace(new RegExp(`ADDRESS\\[${index}\\]`, 'g'), hrefs[index]);
    });

    // جایگزینی پارامترهای GET
    for (const [key, value] of queryParams.entries()) {
        output = output.replace(new RegExp(`GET\\[${key}\\]`, 'g'), value);
    }

    return output;
}

// مثال استفاده:
console.log(templateRun(
    "https://web.domain.com/javad/integer/blog/hello-To-Friends",
    "There's <a href='ADDRESS[1]'>PATH[1]</a> in <a href='ADDRESS[0]'>PATH[0]</a>."
));
// خروجی: There's <a href='web.domain.com/javad/integer'>Integer</a> in <a href='web.domain.com/javad'>Javad</a>.

 

slugify - PHP:

<?php

function slugify(string $text): string {
    $text = preg_replace('/[^a-zA-Z0-9]+/', '-', $text);
    $text = trim($text, '-');
    return strtolower($text);
}

// مثال:
echo slugify("Hello World! How are you?"); // خروجی: hello-world-how-are-you

 

slugify - JS:

function slugify(text) {
    return text
        .toLowerCase()
        .replace(/[^a-z0-9]+/g, '-')
        .replace(/^-+|-+$/g, '');
}

// مثال:
console.log(slugify("Hello World! How are you?")); // خروجی: hello-world-how-are-you

 

truncateText - PHP:

<?php

function truncateText(string $text, int $length = 100, bool $wordBoundary = true): string {
    if (strlen($text) <= $length) return $text;
    
    $truncated = substr($text, 0, $length);
    if ($wordBoundary) {
        $lastSpace = strrpos($truncated, ' ');
        if ($lastSpace !== false) {
            $truncated = substr($truncated, 0, $lastSpace);
        }
    }
    return $truncated . '...';
}

// مثال:
echo truncateText("این یک متن نمونه برای بُریدن است که باید به طول 100 کاراکتر برسد.", 50);
// خروجی: این یک متن نمونه برای بُریدن است که باید به طول 100...

 

truncateText - JS:

function truncateText(text, length = 100, wordBoundary = true) {
    if (text.length <= length) return text;
    
    let truncated = text.substring(0, length);
    if (wordBoundary) {
        const lastSpace = truncated.lastIndexOf(' ');
        if (lastSpace !== -1) {
            truncated = truncated.substring(0, lastSpace);
        }
    }
    return truncated + '...';
}

// مثال:
console.log(truncateText("این یک متن نمونه برای بُریدن است که باید به طول 100 کاراکتر برسد.", 50));
// خروجی: این یک متن نمونه برای بُریدن است که باید به طول 100...

 

و این شد از Web Prettier Utils :)

امیدوارم مورد استفاده توسط شما قرار بگیره و مفید هم واقع بشه

به امید خدا هم اگر اینترنت ها وصل بشه, به زودی به وقتی تعداد یوتیلز ها بیشتر شد به عنوان پکیج Composer و NPM قرار میدمشون تا فقط با یه کامند composer require javadinteger/prettier-utils و npm install prettier-utils-for-web و yarn install prettier-utils-for-web در دسترس شما خواهد بود!

امیدوارم شب و روز بر یک یک شما خوش باشه! خدا نگهدارتون!

Just Programming

لینک به دیدگاه
https://forum.arsacia.ir/topic/106669-web-prettier-utils-part-1/
به اشتراک گذاری در سایت های دیگر

بابت وقتی که گذاشتی ازت ممنونم جواد

فقط یه سوال دارم  ازت 

شما بیشتر تو مسئله Front-end کار میکنید یا Back-end

یا full stack شدی دیگه

شما که تجربت از ما بیشتره بگو جواتی😁❤️

و در پایان

این مرگ است که دروغ نمیگوید

- صادق هدایت -

لینک به دیدگاه
https://forum.arsacia.ir/topic/106669-web-prettier-utils-part-1/#findComment-1104291
به اشتراک گذاری در سایت های دیگر

4 ساعت قبل، MaCBooK گفته است:

بابت وقتی که گذاشتی ازت ممنونم جواد

فقط یه سوال دارم  ازت 

شما بیشتر تو مسئله Front-end کار میکنید یا Back-end

یا full stack شدی دیگه

درود، اولا ممنونم از نظر دلگرم کنندتون ❤️

 

ثانیا بنده بله، فول استک کار میکنم، اما بیشتر سمت بک اند کار میکنم تا فرانت اند

 

4 ساعت قبل، MaCBooK گفته است:

شما که تجربت از ما بیشتره بگو جواتی😁❤️

عزیزی عمو ارادتمندیم ❤️😊

  • مرسی 1

Just Programming

لینک به دیدگاه
https://forum.arsacia.ir/topic/106669-web-prettier-utils-part-1/#findComment-1104656
به اشتراک گذاری در سایت های دیگر

برای ارسال دیدگاه یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید دیدگاهی ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در سایت ما ثبت نام کنید. عضویت خیلی ساده است!

ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید

ورود به حساب کاربری
  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی، در حال مشاهده این صفحه نیست.
×
×
  • اضافه کردن...