سلام، به بخش کار با رشته ها خوش اومدید، PHP توابع بسیار زیاد و کاملی برای دستکاری رشته ها داره که ما در بخش مقدماتی به پرکاربرد ترین اونها اشاره میکنیم. در این درس با تابع کاربردی ()strpos آشنا میشید.
شکل کلی
پارامترها:
- string$ – رشته ای که باید در آن جست و جو شود.
- search$ – رشته ای که باید در string$ جست و جو شود.
- offset$ – محل شروع جست و جو را مشخص میکند و همانطور که قبلا توضیح داده شد میدانیم که یک پارامتر اختیاری است.
مقدار بازگشتی:
اگر رشته مورد نظر ما در رشته اصلی وجود داشته باشه مکان یا آفست(offset) اولین کاراکتر در اولین رشته پیدا شده بصورت یک عدد و در صورت پیدا نکردن رشته مقدار false رو بازگشت میده.
مثال ها
مثال اول – مثالی ساده از نحوه استفاده تابع ()strpos
<?php echo strpos("this is a string, this is a string too!","ring"); # |-----------| # 13 characters ?>
توضیح کد: ما میخوایم محلی که رشته “ring” در رشته “this is a string, this is a string too!” پیدا کنیم، تو این رشته ما رشته “ring” رو دو بار داریم اما همونطور که توضیح دادیم این تابع آفست اولین کاراکتر رو در اولین رشته برمیگردونه، اولین رشته پیدا شده “ring” اول هست و اولین کاراکتر اون هم ‘r’ هست که کاراکتر 13 ـُم در رشته است و باز هم گفتیم که اشاره گر از عدد 0 شمردن رو شروع میکنه یعنی تابع عدد 12 رو بازگشت میده برای حل این مشکل هممیتونید در نهایت یک واحد به نتیجه اضافه کنید.
مثال دوم
از این تابع بیشتر برای استفاده در شرط ها استفاده میشه، مثلا اگر رشته مورد نظر در رشته اصلی بود اونوقت یکرسی کارها انجام بشه.
<?php $string='this is a string, this is a string too!'; $search='this'; $offset=strpos($string,$search); if ($offset !==false) die ("The position of \"$search\" in our string was " . ++$offset); echo "Not found!"; ?>
خروجی:
اگر false==! نمیدونید چیه به قسمت عملگرهای مقایسه ای درس اپراتورها مراجعه کنید.
اگر offset$++ نمیدونید چیه به قسمت عملگرهای افزایشی و کاهشی درس اپراتورها مراجعه کنید.
سلام و ممنون بابت اموزشهای خوبتون
میخواستم بدونم mixed چیه؟
mixed strpos ( string $string , mixed $search [, int $offset = 0 ] )
سلام
mixed یعنی چیزیکه تابع برمیگردونه میتونه میتونه هر نوع داده ای باشه مثل Boolean ، integer و…
موفق باشید.
سلام دوست عزیز واقعا آموزش عالی بود ممنون. خیلی دنبالش میگشتم 🙂
اما سوالی برام پیش اومده. اگه بخوایم به جای اون کلمه دوم (یعنی کلمه ای که جستجو میشه و در مثال اول شما ring بود) یه آرایه از کلمات رو جستجو کنیم باس چیکار کنیم؟
بذارید مشکلم رو واضح تر عرض کنم 🙂
یه جدول دیتابیس ساختم به اسم test که شامل دو column به نام های id و wordهستش که آی دی مشخصه و word شامل کلماتیه که وارد کردم. فرض کنیم دو رکورد داریم که حروف p و a رو توی اون دوتا برای wordدر نظر گرفتم.
حالا چطوری میتونم این دوتا رو با استفاده از این strpos توی یه متن جستجو کنم و نتیجه (true or false) رو برگردونم؟
سلام و ممنون
سوالتون رو تو انجمن مطرح کنید
با تشکر.