پروژه ارژنگ چیه ؟
ارژنگ یه ویرایشگر متن سادست که ۵ قابلیت ساده و کاربردی داره . شما با این ویرایشگر می تونید متون فارسی ای که دارای حروف عربی و یا اعداد انگلیسی هستند رو ویرایش کنید و خروجی کاملن فارسی دریافت کنید ، می تونید توی یک متن کلمه ی خاصی که زیاد تکرار شده رو حذف کنید ، می تونید به جای یک کلمه ی خاص که زیاد تکرار شده کلمه ای دیگه جایگزین کنید ، می تونید متن طولانی ای که فاصله ی بین پاراگراف هاش زیاده رو کوتاه کنید و می تونید از زیر نویس فیلم ها متن خام دریافت کنید.
همه ی این کارها رو اگه دستی بخواید انجام بدید زمان زیادی باید صرف کنید ، ولی با ارژنگ به سرعت می تونید متن ها رو اونجور که می خواید ویرایش کنید .
زبان برنامه نویسی و هدف آموزشی ارژنگ
هسته ی ارژنگ با زبون PHP نوشته شده و دارای دیتابیس نیست . هدف آموزشی پروژه ارژنگ آشنایی بیشتر با توابع ()str_replace و ()preg_replace در PHP هست .
ارژنگ تمام این ۵ کاری که در ابتدا بهش اشاره شد رو تنها با کمک همین دو تابع انجام می ده که در ادامه به کلاس نوشته شده براش و نحوه ی کارش خواهیم پرداخت . همچنین در انتها به این دو تابع و منابعی دربارش هم می پردازیم .
فایل های پروژه
اول از همه می تونید از لینک هایی که بالا و پایین صفحه اومده کدهای پروژه رو دانلود کنید و یا پروژه رو ببینید . اگه سورس پروژه رو دانلود کردید پس از خارج کردن از حالت فشرده ۸ فایل با نام های زیر می بینید :
BYekan.eot
BYekan.svg
BYekan.ttf
BYekan.woff
editor-class.php
index.php
logo.svg
style.css
فایلهایی که اسمشون BYekan هست ، در اصل فونت مورد استفاده در پروژست و کاری بهشون نداریم ، همچنین فایل logo.svg هم لوگو و طرح های پروژست که با فرمت SVG طراحی شده و لایه هاش هم باز هست که با نرم افزار اوپن سورسی مثل Inkscape می تونید ببینیدش و یا ویرایشش کنید.
تنها ۳ فایل باقی می مونه که در اصل سه فایل اصلی پروژه هستند ، یعنی این سه فایل :
editor-class.php
index.php
style.css
در ادامه به بررسی هر کدوم از این فایل ها می پردازیم .
هسته ی اصلی ارژنگ در اصل این فایل هست . این فایل کلاس editor رو تشکیل می ده و این کلاس هم تمام توابعی که توی پروژه مورد استفاده قرار می گیره رو شامل می شه .
کامنت هایی که توی این فایل نوشته شده به زبون فارسیه و شامل چهار بخش زبان ، مقادیر ثابت ، توابع عمومی و توابع خصوصیه .
کل پروژه ارژنگ دارای ۳۴ تا متغیر زبان هست که هر متغیر توی جای خاصی استفاده می شه . شما اگه می خواید متن قسمت خاصی از پروژه رو عوض کنید باید اون رو جلوی متغیرش تعریف کنید و پروژه با توجه به مکانی که برای اون پیغام تهیه شده ، متن رو نمایش می ده . شما می تونید استایل و قالب جدیدی برای ارژنگ طراحی کنید و با استفاده از این متغیرها جای هر پیغام رو مشخص کنید و روی پوسته بزارید .
توی توابعی که داخل این کلاس تعریف شده فقط از ۴ مقدار ثابت کمک گرفته می شه که هر کدوم طبق توضیحات زیر کار خودشونو انجام می دن :
()var $fvar = array
fvar یک آرایست که توی این کلاس چیزهایی که از جانب کاربر توی سایت نوشته می شن و به این کلاس پست می شن رو توی خودش جا می ده . تابعی که این آرایه داخلش تعریف شده ، پس از آنالیز مقدار دریافتی اونو توی یکی از خونه های این آرایه قرار می ده .
var $error_message
error_message متغیر مربوط به پیغام های خطاست . اگر خطایی در برنامه رخ بده پیغام خطای ساخته شده وارد این متغیر می شه و کاربر در صورت پر شدن این متغیر پیغام خطا رو می بینه .
var $success_message
متغیر success_message پیغام های مربوط به موفقیت آمیز بودن رو نمایش می ده . در حال حاضر ارژنگ فقط یک پیغام موفقیت آمیز داره و اونم زمانیه که متن ویرایش بشه و نتیجه آماده شده باشه .
var $ftext
متغیر ftext مربوط به متن نهایی و آماده شدست . این کلاس پس از اینکه متن رو ویرایش کرد اون رو توی این متغیر قرار می ده و متغیر هم مقدار خودش رو برای کاربر نمایش می ده .
کلاس editor دارای ۶ تابع عمومیست که به بررسی این توابع می پردازیم :
( selected_menu ( $editor_number
این تابع برای مشخص کردن اینکه کدام ویرایشگر توسط کاربر انتخاب شده کاربرد داره . هر کدوم از ویرایشگر های ارژنگ دارای یک کده ، این تابع ، کد انتخاب شده رو دریافت و بررسی می کنه که آیا با کدهای تعریف شده مطابقت دارند یا نه و اگر دارند مشخص می کنه کدوم ویرایشگر هست و به صورت خروجی بر می گردونه .
()edit1
این تابع مربوط به ادیتور اوله . وقتی کاربر اطلاعات مربوط به ویرایشگر اول رو ارسال می کنه به این تابع فرستاده می شه و تابع اول بررسی می کنه اطلاعات ارسال شده خالی نباشند و اگر خالی بود پیغام خطا می فرسته .
اگه اطلاعات وجود داشت ، توسط یک تابع ()str_replace کلیه ی اعداد انگلیسی و حروف عربی شناسایی و با معادل فارسیشان جایگزین می شوند و خروجی به متغیر ftext ارسال می شه .
()edit2
این تابع مربوط به ویرایشگر دومه . وقتی کاربر اطلاعاتی از ویرایشگر دوم ارسال می کنه ، تابع اول اطلاعات ارسالی رو از لحاظ خالی نبودن بررسی می کنه و اگر خالی نبودند باز هم توسط یک تابع ()str_replace عبارتی که کاربر فرستاده در متن شناسایی و به جاش کارکتر خالی قرار می گیره .
دو حالت برای این تابع در نظر گرفته شده که حالت اول به صورت کامل تمام حروف شبیه هم رو از بین می بره و حالت دوم ، اول بین عبارتی که کاربر فرستاده فاصله خالی می زاره و بعد عبارت رو حذف می کنه که از لابلای کلمات عبارات حذف نشوند.
()edit3
تابع ویراشگر سوم هم مثل تابع بالا عمل می کنه ، با این تفاوت که توی تابع ()str_replace به جای کارکتر خالی ، عبارت دومی که کاربر انتخاب کرده رو قرار می ده و دیگه کارکتر خالی درج نمی شه .
()edit4
این تابع برای ویرایشگر چهارمه و پس از دریافت و بررسی اطلاعات ورودی ، توسط تابع ()preg_replace کار خودش رو انجام می ده .
اطلاعات ورودی پس از ورود به این تابع از لحاظ تعداد تگ <br> به کار رفته توشون بررسی و با توجه به انتخاب کاربر به یک یا دو تگ <br> تبدیل می شن و فاصله ها منظم می شن .
تابع برای شناسایی <br> های پشت سر هم از فرمول زیر استفاده می کنه :
#(<br */?>\s*)+#i
()edit5
تابع ویرایشگر پنجم هم مثل ویرایشگر چهارم از تابع ()preg_replace کمک می گیره .
توی هر زیرنویس اول ردیف دیالوگ درج شده ، بعد زمان شروع و نمایش دیالوگ و بعد هم خود دیالوگ . این تابع با فرمول زیر ، ردیف و زمان شروع و حذف دیالوگ رو شناسایی و توسط تابع ()preg_replace حذفش می کنه و توی نتیجه فقط دیالوگ باقی می مونه .
/[۰-۹]+<br \/>+[0-9]{2}:[0-9]{2}:[0-9]{2}+,+[0-9]{3} +–>+ [0-9]{2}:[0-9]{2}:[0-9]{2}+,+[0-9]{3}/
کلن توی کلاس ارژنگ ۴ تابع خصوصی وجود داره :
( form_var( &$fvar, $arname, $post
این تابع اطلاعاتی که کاربر پست کرده رو می گیره و توی یکی از خونه های آرایه ی fvar قرار می ده . البته متن پست شده از بین ۳ تابع رد می شه و بعد توی آرایه قرار می گیره که متنی خام و آنالیز شدست .
( error_show ( $err
این تابع پیغام های خطایی که توابع دیگه می سازند رو دریافت و توی متغیر error_message قرار می ده .
(Sanitize( $str,$remove_nl=true
این تابع و تابع بعدیش با کمک هم اطلاعاتی که می خواد وارد آرایه بشه رو آنالیز می کنه و کدهای مخربش رو پاک می کنه .
کل کاری که این ویرایشگر با کمک کلاس editor انجام می ده همین توابع هست و خروجی ها از اینجا ساخته می شن .
این فایل در اصل رابط بین کاربر و هسته ی سایت هست . توی این فایل رابط کاربری با کمک کدهای HTML طراحی شدن و کاربر می تونه با پروژه ارتباط برقرار کنه . وقتی کاربر ویرایشگری رو انتخاب و اطلاعاتی رو می فرسته ، اطلاعات از طریق این فایل به کلاس editor می رن و خروجی از این کلاس به این فایل ارسال و نمایش داده می شه .
برای اینکه این فایل بفهمه کاربر چه ویرایشگری رو انتخاب کرده از تابع selected_menu خروجی رو دریافت و ویرایشگر مورد نظر کاربر رو نمایش می ده . همچنین وقتی کاربر ویرایشگری رو پر کرد و فرستاد ، این فایل برای شناسایی اینکه کدوم ویرایشگر ارسال شده از نامی که توی دکمه ی ارسال تعریف شده کمک می گیره . دکمه ی هر ویرایشگر از edit-1 تا edit-5 نامگذاری شدند . وقتی کاربر دکمه ی ارسال رو می زنه فایل توسط چند خط کد PHP متوجه می شه کدوم ویرایشگر ارسال شده و اطلاعات رو به تابع مربوطش می فرسته و خروجی رو دریافت می کنه .
این فایل هم شامل کدهای CSS هست و کلیه ی ابعاد ، اندازه فونت ، رنگ ها و موارد دیگه که شما توی سایت می بینید ، توی این فایل تعریف شده .
کلن ارژنگ توسط این سه فایل اصلی کار می کنه و بقیه ی فایل ها هم رابطی هستن برای گرافیک بهتر پروژه .
کمک به پروژه
ارژنگ یه پروژه ی کاملن آزاد هست و هر کسی می تونه توی توسعش سهیم باشه . اگه اطلاعاتی تو زمینه برنامه نویسی دارید از طریق گیت هاب و یا همین وبلاگ می تونید توی توسعش کمک کنید و گسترشش بدید .
هر گونه نظر ، انتقاد و پیشنهادی رو هم می تونید از طریق ایمیل [email protected] در میون بزارید . اگر باگ یا ایرادی توی پروژه دیدید و یا نظری دربارش دارید و برنامه نویسی بلد نیستید که اون رو ارایه کنید می تونید از طریق همین ایمیل با من درمیون بزارید .
لینک های مربوط
شاید با دیدن این پروژه و کدهاش مقداری با توابع ()str_replace و ()preg_replace آشنا شدید . ولی اگه دوست دارید بیشتر درباره ی این توابع بدونید می تونید از لینک های زیر استفاده کنید :