PDA

View Full Version : مشکل مقایسه هنگام دریافت رشته ها



MAJIDVADOOSTAN
شنبه 30 تیر 1397, 15:51 عصر
با سلام
من تازه کارم و می دونم سوالم طنزی بیش نیست ولی هر چی گشتم به نتیجه نرسیدم.
من توی فرم خودم یه جا تاریخ رو (به زبان فارسی )با post می فرستم ولی وقتی دریافت می کنم و مثلا چک می کنم که سال رو برابر 1397 وارد کرده باشه جواب نمی ده، با strlen میگیریم می بینم طول رشته رو دوبرابر نشون میده.
راه حل چیه؟ کلا برای زبان فارسی چطور باید مقایسه کرد؟


$mnth=str_replace("/",'', ($_POST['urezervedate']));

$val1=mb_substr($mnth,0,4);

if(strcmp($val1,"1397")==0)

echo "ok";

charcharkh
شنبه 30 تیر 1397, 17:24 عصر
سلام اگر داری با فونت فارسی میفرستی مقدار ورودی رو خب طبیعی هست هر یک کارکتر فارسی دوبرابر طول داره یا بایست مقدار ورودی خروجی رو هر دو انگلیسی بفرستی یا اینکه از یه فیلتر مقدار ورودی رو عبور بدی بعد رشته نهایی رو مقایسه کنی اینم تابع

البته فکر نکنی دوبار اعداد نوشته شدن بلکه توی بعضی دستگاهها کد اسکی فرق میکنه مثلا ۵ با ٥ فرق میکنه :لبخندساده:

بفرماییید خدمت شما ولی سعی کن لقمه اماده تحویل نگیری :چشمک:




public static function english($string) { $string = str_replace('۰','0',$string); $string = str_replace('٠','0',$string); $string = str_replace('۱','1',$string); $string = str_replace('١','1',$string); $string = str_replace('۲','2',$string); $string = str_replace('٢','2',$string); $string = str_replace('۳','3',$string); $string = str_replace('٣','3',$string); $string = str_replace('۴','4',$string); $string = str_replace('٤','4',$string); $string = str_replace('۵','5',$string); $string = str_replace('٥','5',$string); $string = str_replace('۶','6',$string); $string = str_replace('٦','6',$string); $string = str_replace('۷','7',$string); $string = str_replace('٧','7',$string); $string = str_replace('۸','8',$string); $string = str_replace('٨','8',$string); $string = str_replace('۹','9',$string); $string = str_replace('٩','9',$string); return $string; }

MAJIDVADOOSTAN
شنبه 30 تیر 1397, 20:40 عصر
ممنونم ازت، از دیشب دارم زور می زنم و هر آنچه که فکرشو بکنی و نکنی تست کردم نشد که نشد.(
بفرماییید خدمت شما ولی سعی کن لقمه اماده تحویل نگیری )
اصلا فکر نمی کردم مربوط به اینجای کار باشه چون از $_POST که می گرفتم و Echo می زدم تو خروجی انگلیسی نشون می داد. اما انگار داشتم گول ظاهرو می خوردم.
آقا دمت گرم جواب داد خوبم جواب داد. هر چقد فک کنی تشکر و قدردانی.

plague
یک شنبه 31 تیر 1397, 16:49 عصر
var_dump اگه بکنی طول رشته و کاراکتر ها رو نشون میده

MiladWorkShop
یک شنبه 31 تیر 1397, 18:20 عصر
درود

از این کد استفاده کنید : https://miladworkshop.ir/paste/EsUry9

MAJIDVADOOSTAN
شنبه 26 آبان 1397, 22:31 عصر
ممنونم از شما دوست من