PDA

View Full Version : حرفه ای: یک تابع php برای تمیز کردن متن فارسی



kabootar_y
یک شنبه 23 شهریور 1393, 13:18 عصر
سلام
دوستان کسی تابعی سراغ داره که بشه متن فارسی که قراره در url قرار بگیره رو باهاش تمیز کرد.

یعنی متنی مثل متن زیر رو بهش بدیم:



لاریجانی:خطرکندروها کمتر از تندروها نیست/ ائتلاف غرب و اعراب در برخورد با داعش،عقلانیت لازم را ندارد

بعد متن زیر رو تحویل بده:



لاریجانی-خطرکندروها-کمتر-از-تندروها-نیست-ائتلاف-غرب-و-اعراب-در-برخورد-با-داعش-عقلانیت-لازم-ندارد



می خوام متن خروجی رو بذارم داخل آدرس مثل:



http://domain.com/news/لاریجانی-خطرکندروها-کمتر-از-تندروها-نیست-ائتلاف-غرب-و-اعراب-در-برخورد-با-داعش-عقلانیت-لازم-ندارد



اگر کسی function نوشته که این کار رو میکنه و با فارسی مشکل نداره محبت کنید.

arkia
یک شنبه 23 شهریور 1393, 14:11 عصر
کاراکتر فاصله رو با خط تیره جایگزین کنید،


$newtext=str_replace(' ','-',$text);

kabootar_y
یک شنبه 23 شهریور 1393, 15:01 عصر
کاراکتر فاصله رو با خط تیره جایگزین کنید،


$newtext=str_replace(' ','-',$text);




کاراکتر های نقطه, اسلش, سمی کالن, و ... رو چطور جایگزین کنم؟

به طور کلی می خوام حروف فارسی از "الف" تا "ی" و حروف انگلیسی ار "a" تا "z" و از "A" تا "Z" و اعداد از "0" تا "9" نمایش داده بشه. و هیچ کاراکتری غیر از اینها نباشه.

در ضمن بعضی وقتا تو تا کاراکتر "--" کنار هم قرار میگیرند. که نمی خوام این طوری باشه.

shahriyar3
یک شنبه 23 شهریور 1393, 16:28 عصر
برای برداشتن / از stripslashes میتونید استفاده کنید

Unique
یک شنبه 23 شهریور 1393, 20:37 عصر
توی یک Hvhdi کاراکتر هایی که میخوای حذف بشه را بده به str_replace و پارامتر دوم را '' بده. اما اگه میخوای بهترین حالت ممکن باشه و white list بدی و بقیه را حذف کنی باید با regex بدی ! من خیلی توی regex نویسی مهارت ندارم ولی بهترین انتخابه.

arkia
دوشنبه 24 شهریور 1393, 21:48 عصر
کاراکتر های نقطه, اسلش, سمی کالن, و ... رو چطور جایگزین کنم؟
کد او نا هم مثل همین کد ه دیگه باید جایگزین کنی با همین دستور با این تفاوت که برای حذف هر کاراکتری توسط این دستور باید با کوتیشن باز و بسته یا دابل کوتیشن باز و بسته جایگزین کنی


$newtext=str_replace(':','',$text);





به طور کلی می خوام حروف فارسی از "الف" تا "ی" و حروف انگلیسی ار "a" تا "z" و از "A" تا "Z" و اعداد از "0" تا "9" نمایش داده بشه. و هیچ کاراکتری غیر از اینها نباشه.
در ضمن بعضی وقتا تو تا کاراکتر "--" کنار هم قرار میگیرند. که نمی خوام این طوری باشه.

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



در ضمن بعضی وقتا تو تا کاراکتر "--" کنار هم قرار میگیرند. که نمی خوام این طوری باشه.

شما در آخر این دو تا کاراکتر رو با یک کاراکتر جایگزین کن یا با خالی جایگزین کن حذف بشه



$newtext=str_replace('--','-',$text);

arkia
دوشنبه 24 شهریور 1393, 21:53 عصر
توی یک Hvhdi کاراکتر هایی که میخوای حذف بشه را بده به str_replace و پارامتر دوم را '' بده. اما اگه میخوای بهترین حالت ممکن باشه و white list بدی و بقیه را حذف کنی باید با regex بدی ! من خیلی توی regex نویسی مهارت ندارم ولی بهترین انتخابه.

عبارات باقاعده کاراکتر های فارسی رو ساپورت نمیکنه

برای عدد

\d



برای حروف

\w



برای کاراکتر های غیر حروف و عدد

\W