فیلتر کلمات ناپسند و غیراخلاقی با PHP
فیلتر کلمات ناپسند با PHP – در خیلی از مواقع نظرات منفی و ناپسندی را از کاربران دریافت می کنیم که در آن از کلمات غیراخلاقی استفاده کرده اند .
بدین ترتیب با استفاده از PHP می توانیم این کلمات را فیلتر کرده و نمایش دهیم یا آن ها را تفکیک کنیم .
افزودن کتابخانه Persian Swear Words
می تونید این کتابخانه را از این آدرس دریافت کنید . و در پروژه خود استفاده کنید همچنین می توانید از فایل پایین مطلب هم استفاده کنید . این کتابخانه به شما کمک خواهد کرد که بتوانید تشخیص دهید آیا کلمه مورد نظر ناپسند می باشد یا خیر که متود های کاربردی مختلفی دارد .
نمونه گیری از کلاس
$persianswear = new PersianSwear();
متود is_bad
ابتدا رشته را به آن می دهید و در صورتی که کلمه ناپسند باشد یا خیر مقدار boolean برمی گرداند .
$persianswear->is_bad('الاغ')
متود remove_word
در صورتی که فکر می کنید کلمه ای اشتباهی به عنوان یک کلمه ناپسند شناخته شده است می توانید آن را حذف کنید که دیگر کلمه ناپسندی شناخته نشود .
$persianswear->remove_word('الاغ');
متود add_word
این متود مخالف remove_word می باشد در صورتی که کلمه ای ناپسند به عنوان کلمه ای بد شناخته نشود با این متود می توانید آن را به لیست اضافه کنید .
$persianswear->add_word('بیشعوری');
متود has_swear
در صورتی که در بخشی از جمله کلمه ای بی ادبی باشد آن جمله ناپسند شناخته می شود .
$persianswear->has_swear('آقای x آدم دیوانه ای است')
متود filter_words
بخشی های که در جمله ناپسند باشند را با * فیلتر می کند . البته پیشنهاد می شود از این متود و has_swear استفاده نشود که در پایین مشاهده می کنید دلیل آن را از آن جایی که خر کلمه ای ناپسندی است آن را با خروس اشتباه می گیرد برای حل این مشکل می توانید از مینی پروژه زیر استفاده کنید .
echo $persianswear->filter_words('خروس سحر خیز است'); // **وس سحر خیز است
یک مینی پروژه کاربردی با این کتابخانه
یک بخش ثبت نظر خیلی ساده ای را با این کتابخانه می سازیم .
index.html
<!DOCTYPE html> <html lang="fa"> <head> <meta charset="UTF-8"> <title>Rapidcode.iR - سورس کد</title> <link rel="stylesheet" href="static/css/main.css"> </head> <body> <div class="container"> <a id="introduce" href="https://rapidcode.ir" target="_blank">رپید کد • کتابخانه مجازی برنامه نویسان</a> <form action="process.php" method="post"> <label for="comment">نظر شما :</label> <textarea name="comment" id="comment" cols="40" rows="10"></textarea><br> <input type="submit" value="ثبت"> </form> </div> </body> </html>
کمی css با main.css
label[for="comment"]{ vertical-align: top; } input[type="submit"]{ width: 240px; margin-right: 40px; }
فایل process.php
در این فایل اطلاعات وارد شده را بررسی کرده و در صورتی که موردی را یافتیم آن را با * فیلتر می کنیم .
<?php require_once "swear.filter/PersianSwear.php"; $persianswear = new PersianSwear(); $contents = @$_POST['comment']; $contents = explode(" ",$contents); $filtered_content = ""; foreach ($contents as $content) { $tmp_content = $persianswear->is_bad($content) ? str_repeat("*" , strlen($content) / 2) : $content; $filtered_content .= " {$tmp_content}"; } trim($filtered_content); $contents = join(" " , $contents); echo "<h2 dir=\"rtl\">$contents ↓</h2>"; echo "<h2 dir=\"rtl\">$filtered_content</h2>"; ?>
لیست نظرات
سلام مهندس باقری عزیز من این کلاس رو به خاطر مشکلی که داشت قبلا تغییر دادم و برای امیر شکری که اون رو نوشته فرستادم وقتی از تابع فیلترش استفاده میکنی واژه هایی مثل کسی کسیکه کسانیکه کسوت کسری رو به خاطر وجود واژه کَس خراب میکنه و اصلا جالب نیست
می تونید اون واژه رو حذف کنید که در مسیر swear.filter/data.json وجود داره