رفتن به مطلب
iranwebserver میزبانی وب
mhazami

راهنمایی برای filter کردن مقدار text box

پست های پیشنهاد شده

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

مثلا:

#actor:mohammad#

این دستور تمام فیلم هایی که "mohammad" توش بازی کرده رو نمایش میده.

روند کارش توی پی اچ پی خیلی سخت نبود. دوتا هشتگ (همون مربع یا #) رو برداشتم و به جای دو نقطه هم مساوی گذاشتم. شد یه تیکه از کوئری

where actor=mohammad

حالا به خاطر اینکه کاربر تجربه بهتری داشته باشه و جستجو براش قابل فهم تر باشه میخوام متن وارد شده رو filter کنم. (به معنای بازبینی و اعمال تغییرات روی قسمتی از ورودی)

به این صورت که #actor:mohammad# به رنگ آبی در بیاد.

رعایت این نکات خیلی مهمه. # اول که اومد بنویسه آغاز دستور. actor: که نوشته شد بنویسه بازیگر و # آخر که نوشته شد بنویسه پایان دستور (همه یه اینا به صورت تولتیپ و fade in, fade out بشه و در رویداد keyup اتفاق بیوفته)

برای این کار دو راه به ذهنم اومد . یکی اینکه بگم هروقت # دیدی این یه دستوره و رنگشو آبی کن که در این صورت اگه #asdasdasd# رو وارد کنه باز یه دستور به حساب میاد و از اون طرف موتور جستجو قاطی میکنه

راه دومی که به ذهنم رسید اینطوریه

#[B]parameter_name:[/B]value#

وقتی که نام پارامتر رو به همراه دو نقطه دیدی. کل عبارت رو از هشتگ اول تا هشتگ دوم به رنگ آبی در بیار.

حالا من دانش کمی از jquery دارم و میخوام بدونم چطوری این کار رو انجام بدم؟

من فقط یک پارامتر رو مثال زدم. موتور پارامتر های مختلفی داره مثل:actor,director,translator,serial

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

دقیقا متوجه نشدم چی میخوای

اما با php میتونی یه کارایی بکنی

این تابع قبلا یکی از دوستان در انجمن قرار داده بود

تست کنید ببنید بکارتون میاد

function textHighlight($text, $search, $styles = 'color:white;background-color:black', $casesensitive = false) {
$modifier = ($casesensitive) ? 'i' : null;
$quotedSearch = preg_quote($search, '/');
$checkPattern = '/(' . $quotedSearch . ')/' . $modifier;
$strReplacement = "<span style=\"{$styles}\">$1</span>";
return preg_replace($checkPattern, $strReplacement, $text);
}

if(isset($_GET['search'])) {
$text = 'من پرشین اسکریپت را دوست دارم';
echo textHighlight($text, $_GET['search'],'background:red;color:white;font-weight:bold');
}

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
دقیقا متوجه نشدم چی میخوای

اما با php میتونی یه کارایی بکنی

این تابع قبلا یکی از دوستان در انجمن قرار داده بود

تست کنید ببنید بکارتون میاد

function textHighlight($text, $search, $styles = 'color:white;background-color:black', $casesensitive = false) {
$modifier = ($casesensitive) ? 'i' : null;
$quotedSearch = preg_quote($search, '/');
$checkPattern = '/(' . $quotedSearch . ')/' . $modifier;
$strReplacement = "<span style=\"{$styles}\">$1</span>";
return preg_replace($checkPattern, $strReplacement, $text);
}

if(isset($_GET['search'])) {
$text = 'من پرشین اسکریپت را دوست دارم';
echo textHighlight($text, $_GET['search'],'background:red;color:white;font-weight:bold');
}

نه این به کارم نمیاد، من میخوام روی رویداد keyup این کار انجام بشه باید از جی کوئری استفاده کنم.

این تصویر رو ببین

محتوای مخفی

    برای مشاهده لینک ها می بایست در وب سایت عضو باشید!
شاید کمکی کرد. به طور ساده تر بخوام بگم. کل محتوای سرچ باکس رو میخونه هرجا که دید عبارت #actor:mohammad# نوشته شده اون قسمت رو به رنگ آبی در میاره. منتها اینی که گفتم فقط یک مثاله یعنی

#director:har chizi# هم باید به رنگ آبی در بیاد.

یعنی باید بفهمه بین دوتا # پارامتری وجود داره یا نه بعد اگه بود از اولین # تا آخرین # رنگ عبارت آبی بشه. منظورم از پارامتر همون actor یا director ئه

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

برای ارسال دیدگاه یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید دیدگاهی ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در سایت ما ثبت نام کنید. عضویت خیلی ساده است !

ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید

ورود به حساب کاربری

×