PDA

View Full Version : سوال: پیدا کردن یک کاراکتر در یک رشته



numberone1
چهارشنبه 21 تیر 1391, 12:23 عصر
سلام میخوام یک live search برای سایتم بنویسم ولی نمی تونم مستقیم با سینتکس دیتابیس این کارو انجام بدم میخوام توی نام کاربری سایت دونه دونه مقایسه انجام بدم و توی خروجی نمایش بدم مثلا اگه کسی "ش" تایپ کرد یوزر شهریار و آرش و اشکان و ... هر چی که توش داره ش پیدا میکنه رو بیاره اسم یه تابع رو میخوام که توی رشته بگرده اون حرف و برگردونه اسامی کاربر ها هم بصورت رشته هست نه آرایه ممنون

lady64
چهارشنبه 21 تیر 1391, 14:02 عصر
با سلام . این مربوط به ajax هست . البته من خودم هنوز امتحان نکردم .فکر کنم آقا محسن یک بار اینو جواب داده بودند :
http://www.w3schools.com/php/php_ajax_livesearch.asp

numberone1
چهارشنبه 21 تیر 1391, 15:48 عصر
کد ایجکس نمیخوام من فقط اسم تابعی که که میتونه یک کاراکتر و توی یک رشته پیدا کنه رو میخوام

lady64
چهارشنبه 21 تیر 1391, 17:22 عصر
کد ایجکس نمیخوام من فقط اسم تابعی که که میتونه یک کاراکتر و توی یک رشته پیدا کنه رو میخوام



if(strstr("ش","آرش"))
echo 'yes';
else
echo
'false';

میتونید اسامی رو که از پایگاه میخونید ، بعنوان یک متغیر به تابع strstr بدین ، و به جای آرش بصورت یک متغیر اسم رو وارد کنید .
اگر جواب true بود ، یک شرط میزارید که یوزر اونا رو بده

numberone1
چهارشنبه 21 تیر 1391, 21:47 عصر
if(strstr("ش","آرش"))
echo 'yes';
else
echo
'false';

میتونید اسامی رو که از پایگاه میخونید ، بعنوان یک متغیر به تابع strstr بدین ، و به جای آرش بصورت یک متغیر اسم رو وارد کنید .
اگر جواب true بود ، یک شرط میزارید که یوزر اونا رو بده

این جواب نمیده من خیلی کارم گیره این تابع فقط داره فالس بر میگردونه همه رو هیچی درست برنمیگردونه!!!! لطفا یکی کمک کنه

Unique
چهارشنبه 21 تیر 1391, 22:26 عصر
دوست عزیز این روشی که شما میخواین استفاده کنین اشتباه ! باید یک query بدین و از like استفاده کنین :

select name from users where name like '%ش%';

اینجوری دیگه نیاز نیست با php کل اطلاعات را توی حلقه بندازین ! فرض کنیم شما 1 میلیون اسم دارین ! میخواین توشون loop کنین ؟!؟

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

$name = "آرش";
$pos = strpos($name,"ش");
if ($pos !== false) {
echo "found !";
}

اما بازم میگم این کار اشتباهه !
[در ضمن دم امضای شما هم گرم گرم !]

numberone1
چهارشنبه 21 تیر 1391, 22:41 عصر
دوست عزیز این روشی که شما میخواین استفاده کنین اشتباه ! باید یک query بدین و از like استفاده کنین :

select name from users where name like '%ش%';

اینجوری دیگه نیاز نیست با php کل اطلاعات را توی حلقه بندازین ! فرض کنیم شما 1 میلیون اسم دارین ! میخواین توشون loop کنین ؟!؟

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

$name = "آرش";
$pos = strpos($name,"ش");
if ($pos !== false) {
echo "found !";
}

اما بازم میگم این کار اشتباهه !
[در ضمن دم امضای شما هم گرم گرم !]

میدونم که اشتباهه ولی خوب تقصیر من نیست اطلاعات و دارم از api یه سایت دیگه میخونم دسترسی به سینتکس دیتابیس ندارم

lady64
پنج شنبه 22 تیر 1391, 08:20 صبح
امتحان کردم جواب میده و false برنمیگردونه .


<?php
$x="آرش";
if(strstr($x,"آ"))
echo 'yes';
else
echo
'false';
?>

هرچند به قول آقای uniq روش جالبی نیست.
این لینک رو هم ببینید . قسمت توابع رشته ای شاید براتون قابل استفاده باشه
http://barnamenevis.org/showthread.php?235673-معرفی-توابع-php