هومن
3 سال پیش توسط هومن مطرح شد
3 پاسخ

مشکل در کارکردن با تابع strops در php

سلام،

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

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

به صورت ساده تر :

من متن زیر رو ارسال میکنم :
سلام، خوبی چه خبر ؟

ربات بیاد کلمات این متنو تو دایرکتوری ها سرچ کنه و ببینه اسم کدوم دایرکتوری با متن مطابقت داره،.
// برای مثال من یک دایرکتوری ساختم به نام ( خوبی )
ربات میاد و میبینه اسم یک دایرکتوری ( خوبی) هست، پس میره تا به جمله طرف پاسخ بده.

برای همین من یک تیکه کد نوشتم که کار نمیکنه و اشتباس :

if (strpos($textmessage and file_exists("cmd/$textmessage")) !== false ){

@Muhammad


ثبت پرسش جدید
Muhammad
تخصص : Back-End Developer
@muhammad 3 سال پیش آپدیت شد
0

سلام. حالا شما مارو تحریک نکنی که «اگه PHP کار هستید» بازم بلد باشیم جواب می‌دیم. 😁

این دایرکتوری‌هارو درست کردم و یه فایل code.php هم ساختم:

folders
/ bye
/ chetori
/ khoobi
/ salam
code.php

بعد داخل کد PHP نوشتم:

<?php

function directoryExists($text) {
    foreach (explode(' ', $text) as $word) {
        $status = is_dir(__DIR__ . DIRECTORY_SEPARATOR . 'folders' . DIRECTORY_SEPARATOR . $word);
        if ($status) return true;
    }

    return false;
}

$text = 'salam chetori';
var_dump(directoryExists($text));

خروجی به صورت بولین (true یا false) میاد.


هومن
تخصص : گرافیک، طراحی رابط کاربری، Bac...
@houman 3 سال پیش آپدیت شد
0

کسی نبود کمکم کنه ؟

خودم احساس میکنم نمیشه این کارو کرد کلا /:

اگه php کار هستید بگین به نظرتون میشه این کارو کرد یا نه


Muhammad
تخصص : Back-End Developer
@muhammad 3 سال پیش آپدیت شد
0

سلام. حالا شما مارو تحریک نکنی که «اگه PHP کار هستید» بازم بلد باشیم جواب می‌دیم. 😁

این دایرکتوری‌هارو درست کردم و یه فایل code.php هم ساختم:

folders
/ bye
/ chetori
/ khoobi
/ salam
code.php

بعد داخل کد PHP نوشتم:

<?php

function directoryExists($text) {
    foreach (explode(' ', $text) as $word) {
        $status = is_dir(__DIR__ . DIRECTORY_SEPARATOR . 'folders' . DIRECTORY_SEPARATOR . $word);
        if ($status) return true;
    }

    return false;
}

$text = 'salam chetori';
var_dump(directoryExists($text));

خروجی به صورت بولین (true یا false) میاد.


Muhammad
تخصص : Back-End Developer
@muhammad 3 سال پیش مطرح شد
0

البته اگه قراره ریکوست‌های زیادی بیاد، ترجیح می‌دم اولش با scandir لیستی از دایرکتوری‌هارو بگیرم، بعد به ازای هر کلمه داخل اون آرایه جستجو کنم چون اگه فانکشن is_dir لیستی از دایرکتوری‌هارو نگه نداره و هر بار چک کنه (تحقیق نکردم که پشت صحنه‌ی این فانکشن چه خبره و چه طور این کار رو انجام می‌ده)، بررسی‌کردنش به ازای هر کلمه از جمله بهینه نیست.


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام