چه توابعی می تونن جایگزین preg_match بشن؟

phpweb

Active Member
من برای فیلتر کردن هر نوع داده ای که از طرف کاربر به سمت سرور ارسال می شه از preg_match استفاده می کنم. اما با توجه به کند بودن این تابع و طوالانی بودن نوشتن یه reguler expertion می خوام از توابع جایگزین استفاده کنم.

لطفا اگر تابعی معرفی می کنید، بگید که امینت و سعتش نسبت به preg_match به چه شکل هست؟
 

k2-4u

Well-Known Member
خب بهترین توابع همون preg_match هستش
شما می خوایین چه کاری انجام بدین ؟ شاید بشه با الگوریتم دیگه ای
حلش کرد
 

phpweb

Active Member
خب بهترین توابع همون preg_match هستش
شما می خوایین چه کاری انجام بدین ؟ شاید بشه با الگوریتم دیگه ای
حلش کرد
می خوام بدونم که توابعی مثل is_num, is_string و توابع مشابه امنیت و سرعت بیشتری دارن یا تابع preg_match ؟

جایی دیده بودم که تابع preg_match با بعضی از کارکترها ، مثل کاراکتر نال مشکل داره و به درستی اجرا نمی شه.

نظر شما چیه؟
 

k2-4u

Well-Known Member
تابع preg_match از regex استفاده می کنه
اگر فایل های مفسر php رو نگاه کنید می تونید کد های توابع regex رو در یک فولدر جدا ببینین
(به زبان C نوشته شده)
خب . دقت و امنیت regex از توابعی مثل is_sting و... کلا توابع دیگه خیلی بیشتره
اما در رابطه با سرعت .
وقتی بحث سرعت میاد وسط که شما بخوایین کار سنگین خاصی انجام بدین
در غیر این صورت فرق سرعت ها . احساس نمیشه
و نکته دیگه اینکه regex نمیتونه تشخص بده نوع داده شما مثلا integer هستش یا String و یا Object & Resource
 

phpweb

Active Member
تابع preg_match از regex استفاده می کنه
اگر فایل های مفسر php رو نگاه کنید می تونید کد های توابع regex رو در یک فولدر جدا ببینین
(به زبان C نوشته شده)
خب . دقت و امنیت regex از توابعی مثل is_sting و... کلا توابع دیگه خیلی بیشتره
اما در رابطه با سرعت .
وقتی بحث سرعت میاد وسط که شما بخوایین کار سنگین خاصی انجام بدین
در غیر این صورت فرق سرعت ها . احساس نمیشه
و نکته دیگه اینکه regex نمیتونه تشخص بده نوع داده شما مثلا integer هستش یا String و یا Object & Resource
من می خوام یه مقدار که فقط از اعداد ساخته شده رو چک کنم. شما preg_match رو پیشنهاد می کنید یا is_int ؟

یعنی شما می گید که is_int امنیت کافی نداره؟

من می خوام سرعت وب سایتهام بالا باشن و البته امنیت بالایی هم داشته باشن.
 

eAmin

Well-Known Member
من می خوام یه مقدار که فقط از اعداد ساخته شده رو چک کنم. شما preg_match رو پیشنهاد می کنید یا is_int ؟

یعنی شما می گید که is_int امنیت کافی نداره؟

من می خوام سرعت وب سایتهام بالا باشن و البته امنیت بالایی هم داشته باشن.
ایشون همچین حرفی رو نگفتند!
اگر میخواید متوجه بشید، ورودی شما فقط عددی هست یا خیر، میتونید از همون is_int یا is_numeric استفاده کنید و کافی هم هست. و یا میتونید از Type Casting ورودی رو به نوع مورد نظرتون تبدیل کنید.
preg_match برای کارکردن بر روی رشته ها ( String ) بکار میره. یعنی داده ای فقط از نوع string، و برای داده هایی از نوع int یا float و یا object و ... بکار نمیره.

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

k2-4u

Well-Known Member
در کل این توابع و کد ها تاثیر چشمگیری
بر روی کار شما نداره . راحت استفاده کنید !
بنظر من از preg_match استفاده کنید
 

phpweb

Active Member
ایشون همچین حرفی رو نگفتند!
اگر میخواید متوجه بشید، ورودی شما فقط عددی هست یا خیر، میتونید از همون is_int یا is_numeric استفاده کنید و کافی هم هست. و یا میتونید از Type Casting ورودی رو به نوع مورد نظرتون تبدیل کنید.
preg_match برای کارکردن بر روی رشته ها ( String ) بکار میره. یعنی داده ای فقط از نوع string، و برای داده هایی از نوع int یا float و یا object و ... بکار نمیره.

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

شاید تابع is_int برای چک کردن ورودی از perg_match استفاده کنه.اگه اینطور باشه که بنظر بهتره از perg_match استفاده کرد.

می دونید که تابع is_int به چه شکل فرمت ورودی رو تشخیص می ده؟
 

Masoud1365

مدیر انجمن
من نمی دونم که تابع is_int یا توابع مشابه، برای چک کردن فرمت داده از چه توابعی استفاده می کنن.
این که یکی از توابع خود php هست ! یعنی چی از چه توابعی استفاده میکنه ؟
شاید تابع is_int برای چک کردن ورودی از perg_match استفاده کنه.اگه اینطور باشه که بنظر بهتره از perg_match استفاده کرد.
این هم دیگه از اون سوالهاست ها :wink: اگه اینطوری هست که خود php هم مثلا با c یا اسمبلی نوشته شده پس چه کاریه ما php کار کنیم میریم c کار میکنیم !
می دونید که تابع is_int به چه شکل فرمت ورودی رو تشخیص می ده؟
یه ورودی میگیره اگر از نوع int باشه true و در غیر این صورت false بر میگردونه !

اینم کلا بگم که زیاد نباید وسواس به خرج بدیم ! یه سری چیزها توی php آماده هست مثل همین توابعی که گفتید و یه سری هاش هم نیست مثلا php تابع آماده برای چک کردن شماره کارتهای بانک ملی نداره اونو خودمون با استفاده از عبارات منظم مینویسیم حالا این که به چند روش میشه این کارو کرد زیاد مهم نیست ( تا اونجا که پرفورمنسمون بهم نریزه ) که در توابعی هم که شما میگید از هر روشی بریم زیاد فرقی نداره !
 

جدیدترین ارسال ها

بالا