• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
حذف کاراکترهای خاص از url
#1
Question 
سلام من از کد زیر برای از بین بردن هر نوع کاراکتری غیر از حروف و عدد از آدرس سایت استفاده میکنم (در متغیر url که توسط get دریافت میشود)
خیلی خوب کار میکنه منتها برای حروف فارسی جواب نمیده ، تک تک حروف فارسی هم داخلش جا دادم ولی نمیدونم مشکل چیه ، ممنون میشم راهنمایی کنید :
کد پی‌اچ‌پی:
preg_replace('/[^A-Za-z0-9\-]/'''$url); 
  پاسخ
تشکر شده توسط : mojtaba79
#2
این صفحه رو ببینید:
کد:
http://stackoverflow.com/questions/4621727/using-preg-match-to-detect-persian-farsi-characters-in-string
میثم محمودی | انجمن کد ایگنایتر فارسی
--------------------------
هرگز نمي توان با آدمهاي کوچک کارهاي بزرگ انجام داد
  پاسخ
تشکر شده توسط : M.J ayoubsys
#3
(۱۳۹۵ اسفند ۱۸, ۱۱:۰۷ ق.ظ)Maysam.m نوشته: این صفحه رو ببینید:
کد:
http://stackoverflow.com/questions/4621727/using-preg-match-to-detect-persian-farsi-characters-in-string

تشکر ، اما پاسخ سوال بنده این نیست ، برای فهمیدن اینکه عبارت مورد نظر از کاراکترهای انگلیسی و فارسی و عدد تشکیل شده یا نه مشکلی ندارم و کدشو دارم منتها بحث من در مورد حذف کردن کاراکترهای غیر حروف فارسی و انگلیسی و اعداد هست.

کد زیر جواب داد :
کد پی‌اچ‌پی:
preg_replace('/[^\p{Arabic}\da-z-]/ui'''$url); 
  پاسخ
تشکر شده توسط :
#4
نکته اول اینه فقط با REGEX عبارت رو تشخیص داد با همون الگو میشه عبارت غیر از این الگلو رو حذف کرد.
نکته دوم اینه علت این کاری که میخواهید بکنید چیه؟ امنیت؟
میثم محمودی | انجمن کد ایگنایتر فارسی
--------------------------
هرگز نمي توان با آدمهاي کوچک کارهاي بزرگ انجام داد
  پاسخ
تشکر شده توسط :
#5
نقل قول:نکته اول اینه علت این کاری که میخواهید بکنید چیه؟ امنیت؟
فکر کنم برای فرم میخواد...


کد پی‌اچ‌پی:
preg_replace("/[^[:alnum:][:space:]]/u"'''[email protected]#$%^&*()0123456789-=_+[]{}\";:/.,<>?><abcdefghiptjmxvضصثقفغعحخمنتالبیشظرطدئئردذ'); 
وبلاگ: Yousha.Blog.ir


 کد کمتر => خطای کمتر => قابل فهمتر => خوانایی بالاتر => نگهداری بهتر

  پاسخ
تشکر شده توسط : Maysam.m ayoubsys
#6
گفتم برای چی میخوام دیگه Blush اون url که گفتم - برای cms هست - وقتی عنوان نوشته رو ذخیره میکنی ممکنه عنوان یکسری کاراکتر داشته باشه که اگر در آدرس سایت بیاد بعنوان پارامتر - ممکنه اروری بده یا مشکلی ایجاد کنه که مطلب پیدا نشه ( تو وردپرس همینطوری که من میخواستم هست و همه کاراکترهای اضافی حذف میشه ) - حتی اگر از urlencode استفاده کنید باز بعضی از کاراکتر مشکل ایجاد میکنه - بهترین حالت رو مشابه کاری که وردپرس میکنه دیدم .
من به اون صفحه ای که دوست عزیزمون گفتن رفتم و تست گرفتم نشد اما کد زیر رو تست گرفتم و کارم رو راه انداخت :

کد پی‌اچ‌پی:
preg_replace('/[^\p{Arabic}\da-z-]/ui'''$url); 
ممنون از شما.Heart
  پاسخ
تشکر شده توسط : Maysam.m
#7
اگه منظورتون ساخت slug هست به نظرم راه های ساده تر و کلی تری هم وجود داره.
مثلا ابتدا بیایید تمام کاراکترهایی که مشکل زا در آدرس هستند رو مثل ?%$# و.. رو حذف کنید و در آخر هم آدرس رو urlencode کنید. اینطوری در آدرس ها هم مشکل پیش نمیاد
میثم محمودی | انجمن کد ایگنایتر فارسی
--------------------------
هرگز نمي توان با آدمهاي کوچک کارهاي بزرگ انجام داد
  پاسخ
تشکر شده توسط :
#8
شما هیچوقت نمیتونی عبارت انکد شده رو دیکد کنی مگر این که الگوریتمش رو برعکس کنی. و این کار خیلی بیشتر از این حرف ها کد میبره ، هر عبارت تبدیل شده به عبارت دیگه ای و شما باید الگوریتمش رو بدونی یا به ازای تک تک حروف replace تعریف کنی.
Shy
  پاسخ
تشکر شده توسط :


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان