ویرایشگر متن ارژنگ

ویرایشگر ارژنگ

پروژه ارژنگ چیه ؟

ارژنگ یه ویرایشگر متن سادست که ۵ قابلیت ساده و کاربردی داره . شما با این ویرایشگر می تونید متون فارسی ای که دارای حروف عربی و یا اعداد انگلیسی هستند رو ویرایش کنید و خروجی کاملن فارسی دریافت کنید ، می تونید توی یک متن کلمه ی خاصی که زیاد تکرار شده رو حذف کنید ، می تونید به جای یک کلمه ی خاص که زیاد تکرار شده کلمه ای دیگه جایگزین کنید ، می تونید متن طولانی ای که فاصله ی بین پاراگراف هاش زیاده رو کوتاه کنید و می تونید از زیر نویس فیلم ها متن خام دریافت کنید.

همه ی این کارها رو اگه دستی بخواید انجام بدید زمان زیادی باید صرف کنید ، ولی با ارژنگ به سرعت می تونید متن ها رو اونجور که می خواید ویرایش کنید .

زبان برنامه نویسی و هدف آموزشی ارژنگ

هسته ی ارژنگ با زبون 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-class.php

هسته ی اصلی ارژنگ در اصل این فایل هست . این فایل کلاس 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} +–&gt;+ [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 انجام می ده همین توابع هست و خروجی ها از اینجا ساخته می شن .

  • فایل index.php

این فایل در اصل رابط بین کاربر و هسته ی سایت هست . توی این فایل رابط کاربری با کمک کدهای HTML طراحی شدن و کاربر می تونه با پروژه ارتباط برقرار کنه . وقتی کاربر ویرایشگری رو انتخاب و اطلاعاتی رو می فرسته ، اطلاعات از طریق این فایل به کلاس editor می رن و خروجی از این کلاس به این فایل ارسال و نمایش داده می شه .

برای اینکه این فایل بفهمه کاربر چه ویرایشگری رو انتخاب کرده از تابع selected_menu خروجی رو دریافت و ویرایشگر مورد نظر کاربر رو نمایش می ده . همچنین وقتی کاربر ویرایشگری رو پر کرد و فرستاد ، این فایل برای شناسایی اینکه کدوم ویرایشگر ارسال شده از نامی که توی دکمه ی ارسال تعریف شده کمک می گیره . دکمه ی هر ویرایشگر از edit-1 تا edit-5 نامگذاری شدند . وقتی کاربر دکمه ی ارسال رو می زنه فایل توسط چند خط کد PHP متوجه می شه کدوم ویرایشگر ارسال شده و اطلاعات رو به تابع مربوطش می فرسته و خروجی رو دریافت می کنه .

  • فایل style.css

این فایل هم شامل کدهای CSS هست و کلیه ی ابعاد ، اندازه فونت ، رنگ ها و موارد دیگه که شما توی سایت می بینید ، توی این فایل تعریف شده .

کلن ارژنگ توسط این سه فایل اصلی کار می کنه و بقیه ی فایل ها هم رابطی هستن برای گرافیک بهتر پروژه .

کمک به پروژه

ارژنگ یه پروژه ی کاملن آزاد هست و هر کسی می تونه توی توسعش سهیم باشه . اگه اطلاعاتی تو زمینه برنامه نویسی دارید از طریق گیت هاب و یا همین وبلاگ می تونید توی توسعش کمک کنید و گسترشش بدید .

هر گونه نظر ، انتقاد و پیشنهادی رو هم می تونید از طریق ایمیل me@jentelman.com در میون بزارید . اگر باگ یا ایرادی توی پروژه دیدید و یا نظری دربارش دارید و برنامه نویسی بلد نیستید که اون رو ارایه کنید می تونید از طریق همین ایمیل با من درمیون بزارید .

لینک های مربوط

شاید با دیدن این پروژه و کدهاش مقداری با توابع ()str_replace و ()preg_replace آشنا شدید . ولی اگه دوست دارید بیشتر درباره ی این توابع بدونید می تونید از لینک های زیر استفاده کنید :

ویرایشگر ارژنگ

ایمیلتون رو توی کادر زیر وارد کنید و عضو خبرنامه ی جنتلمن بشید تا همیشه آخرین مطالب رو توی ایمیلتون بخونید :
اگه نمی خواید از طریق ایمیل جنتلمن رو دنبال کنید راه های دیگه ای هم برای اشتراک هست !
آرشیو ماهانه
برچسب ها
لینک های خوشمزه
  • برو بچه ها بلاگر
  • دوستای مجازی
    تبلیغ
  • مطالبی که می نویسم آزاد هستند و انعکاس آن از هر طریقی مشکلی ندارد!
    Jentelman.com . Made With In IRAN . 2010- 2017