Integer ارسال شده در March 3 اشتراک گذاری ارسال شده در March 3 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/ به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری...
BlackFlash ارسال شده در March 5 اشتراک گذاری ارسال شده در March 5 بابت وقتی که گذاشتی ازت ممنونم جواد فقط یه سوال دارم ازت شما بیشتر تو مسئله Front-end کار میکنید یا Back-end یا full stack شدی دیگه شما که تجربت از ما بیشتره بگو جواتی😁❤️ و در پایان این مرگ است که دروغ نمیگوید - صادق هدایت - لینک به دیدگاه https://forum.arsacia.ir/topic/106669-web-prettier-utils-part-1/#findComment-1104291 به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری...
Integer ارسال شده در March 5 سازنده اشتراک گذاری ارسال شده در March 5 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 به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری...
ارسالهای توصیه شده
برای ارسال دیدگاه یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید
برای اینکه بتوانید دیدگاهی ارسال کنید نیاز دارید که کاربر سایت شوید
ایجاد یک حساب کاربری
برای حساب کاربری جدید در سایت ما ثبت نام کنید. عضویت خیلی ساده است!
ثبت نام یک حساب کاربری جدیدورود به حساب کاربری
دارای حساب کاربری هستید؟ از اینجا وارد شوید
ورود به حساب کاربری