Ramin Mor
2 سال پیش توسط Ramin Mor مطرح شد
13 پاسخ

جستجو بدون در نظر گرفتن تگ های html

سلام وقت بخیر دوستان
من یه متنهایی دارم که توسط ادیتور های متن ذخیره شدن و به صورت html هست.
وقتی مثلا کلمه a رو سرچ میکنم تگ های html هم سرچ میشن. ولی مد نظرم متن های داخل تگ ها هست
پیشنهاد یا کدی هست که توسط php فقط متن های داخل تگ ها سرچ بشن نه خود تگها؟
و میخوام اون کلمات یافت شده مارک بشن.


ثبت پرسش جدید
آرمان یزدان شناس
تخصص : فروش و خدمات پس از فروش کامپیو...
@Arman.yazdanshenas 2 سال پیش مطرح شد
0

سلام. به نظرم یه راه حل میتونه این باشه که کل متن رو تو یک متغیری ذخیره کنی ، بعد با استفاده از یک تابع حالا یا تو PHP یا JavaScript یا هرچی بیای تگ های html رو حذف کنی و حالا اون موردی که دنبالش میگردی رو توی این متن فیلتر شده جستجو کنی. این عبارت رو گوگل کن:
How to remove html tags from a given string


BahmanMD
تخصص : PHPDeveloper
@BahmanMD 2 سال پیش مطرح شد
1

شما میتونین از عبارات منظم (REGEX) برای حذف تگهای HTML در جستجوها استفاده کنین.
برای مثال میشه از کد زیر استفاده کرد که هر عبارتی بین <...> باشه رو حذف کنه:

preg_replace('/<[^>]*>/i', '', $content)

Ramin Mor
تخصص : کارشناس آی تی (برنامه نویسی)
@ramin.mor47 2 سال پیش آپدیت شد
0

@BahmanMD
از دستور زیر استفاده میکنم ولی کلا ساختار متن بهم میریزه. بعد از مارک کردن ساختار متن که شامل تگ های html بود از بین میره

$bandtozih = str_ireplace($txtSearch, '<mark>' . trim($txtSearch) . '</mark>',preg_replace('/<[^>]*>/i', '', $bandtozih) );

BahmanMD
تخصص : PHPDeveloper
@BahmanMD 2 سال پیش مطرح شد
1

شما فقط از این کد استفاده کنین:

$bandtozih = preg_replace('/<[^>]*>/i', '', $txtSearch);

Ramin Mor
تخصص : کارشناس آی تی (برنامه نویسی)
@ramin.mor47 2 سال پیش آپدیت شد
0

@BahmanMD
متاسفانه جواب نداد
برای مثال من تو کد های زیر دنبال کلمه a میگردم

<div class="card-body">
<h5 class="card-title text-primary">مرجع قانونی </h5>
<p class="card-text"></p><p dir="RTL" style="text-align:justify">this is a book</p>
<p dir="RTL" style="text-align:justify"><strong>یادآوری</strong>-&nbsp;<a class="btnbandmodal" href="" data-bs-toggle="modal" data-bs-target="#bandmodal" data-bandid="پیوست الف" data-baznegari="1390"> [پیوست الف]</a> this is a book.</p>
<p></p>
<hr class="bg-danger border-2 border-top border-warning">
</div>

و میخوام مارکشون کنم


BahmanMD
تخصص : PHPDeveloper
@BahmanMD 2 سال پیش آپدیت شد
1

تقریبا چیزی شبیه به این میشه:

$keyword = 'a';
$text = <<<EOF
<div class="card-body">
<h5 class="card-title text-primary">مرجع قانونی </h5>
<p class="card-text"></p><p dir="RTL" style="text-align:justify">this is a book</p>
<p dir="RTL" style="text-align:justify"><strong>یادآوری</strong>-&nbsp;<a class="btnbandmodal" href="" data-bs-toggle="modal" data-bs-target="#bandmodal" data-bandid="پیوست الف" data-baznegari="1390"> [پیوست الف]</a> this is a book.</p>
<p></p>
<hr class="bg-danger border-2 border-top border-warning">
</div>
EOF;
$textWithoutHtmlTags = preg_replace('/<[^>]*>/i', '', $text); // Or $textWithoutHtmlTags = strip_tags($text);
$highlightedKeyword = '<b style="color:red">' . $keyword . '</b>';

echo str_replace($keyword,$highlightedKeyword,$textWithoutHtmlTags);

Ramin Mor
تخصص : کارشناس آی تی (برنامه نویسی)
@ramin.mor47 2 سال پیش مطرح شد
0

@BahmanMD متاسفانه جواب نداد.


BahmanMD
تخصص : PHPDeveloper
@BahmanMD 2 سال پیش مطرح شد
3

@ramin.mor47 این تست برنامه هست که به خوبی حرف a بولد و قرمز شده:
 تصویر


Ramin Mor
تخصص : کارشناس آی تی (برنامه نویسی)
@ramin.mor47 2 سال پیش آپدیت شد
0

@BahmanMD
برای نمونه من برای متن زیر جواب نگرفتم. مثلا برای کلمه "کشش"

<div class="card-body">
                                            <h5 class="card-title text-primary">فهرست وسایل ایمنی برقی (الزامی) </h5>

                                                                                                <p class="card-text"></p><p style="text-align:center"><strong>جدول(الف-1)- فهرست وسایل ایمنی برقی</strong></p>

<table align="center" border="1" cellpadding="1" cellspacing="1" style="width:1000px">
    <tbody>
        <tr>
            <td style="text-align:center">شماره ی بند</td>
            <td style="text-align:center">وسایلی که باید کنترل شوند</td>
        </tr>
        <tr>
            <td style="text-align:right; vertical-align:top; width:100px">
            <p>5-2-2-2-2</p>

            <p dir="ltr">5-7-3-4-الف</p>

            <p dir="ltr">1-3-4-6- ب</p>

            <p>3-3-4-6-ث</p>

            <p>1-4-4-6- ث</p>

            <p>1-4-4-6-ج</p>

            <p>1-4-4-6-چ</p>

            <p>4-5-4-6-الف</p>

            <p>5-5-4-6-ب</p>

            <p>5-5-4-6-پ</p>

            <p>1-7-4-6-ث</p>

            <p>2-7-4-6-ث</p>

            <p>5-1-7-6</p>

            <p>1-3-7-7</p>

            <p>1-4-7-7</p>

            <p>2-6-7-7</p>

            <p>2-9-8</p>

            <p>2-4-12-8</p>

            <p>15-8-ب</p>

            <p>3-5-9</p>

            <p>1-6-9-ث</p>

            <p>2-6-9</p>

            <p>8-8-9</p>

            <p>1-11-9-9</p>

            <p>1-11-9-9</p>

            <p>2-11-9-9</p>

            <p>3-11-9-9</p>

            <p>5-10-9</p>

            <p>7-11-9</p>

            <p>8-11-9</p>

            <p>4-3-4-10</p>

            <p>3-2-5-10-ب</p>

            <p>1-3-5-10-ب-2</p>

            <p>1-2-11-پ</p>

            <p>1-1-5-12</p>

            <p>4-8-12-پ</p>

            <p>5-8-12</p>

            <p>9-12</p>

            <p>2-4-13</p>

            <p>2-1-2-14-الف-2</p>

            <p>2-1-2-14-الف-3</p>

            <p>3-1-2-14-پ</p>

            <p>1-2-2-14-ج</p>

            <p>1-2-2-14-چ</p>
            </td>
            <td style="vertical-align:top">
            <p>بررسی وضعیت بسته بودن درهای بازرسی اضطراری و دریچه های بازدید</p>

            <p>وسیله متوقف کننده در چاهک</p>

            <p>بررسی موقعیت غیرفعال وسیله مکانیکی</p>

            <p>بررسی موقعیت بسته درها و دریچه های بازرسی داخل کابین</p>

            <p>بررسی باز شدن یک در دسترسی به چاهک توسط یک کلید</p>

            <p>بررسی موقعیت غیرفعال وسیله مکانیکی</p>

            <p>بررسی موقعیت فعال وسیله مکانیکی</p>

            <p>بررسی موقعیت کفی جمع شو در حالت کاملا جمع</p>

            <p>بررسی موقعیت کاملا جمع متوقف کننده های متحرک</p>

            <p>بررسی موقعیت کاملا باز متوقف کننده های متحرک</p>

            <p>بررسی موقعیت بسته درهای دسترسی</p>

            <p>بررسی موقعیت بسته درهای دسترسی</p>

            <p>وسیله ی متوقف کننده در اتاق فلکه</p>

            <p>بررسی قفل بودن درهای طبقات</p>

            <p>بررسی وضعیت بسته بودن درهای طبقات</p>

            <p>بررسی وضعیت بسته بودن لته های بدون قفل</p>

            <p>بررس وضعیت بسته بودن در کابین</p>

            <p>بررسی قفل بودن دریچه های اضطراری و در اضطراری کابین</p>

            <p>وسیله ی متوقف کنننده روی سقف کابین</p>

            <p>بررسی کشش نسبی غیرعادی طناب یا زنجیر در مورد سیستم آویز دو طنابه یا دو زنجیره</p>

            <p>بررسی کشش طنابهای جبران</p>

            <p>بررسی لوازم ضدجهش</p>

            <p>بررس عملکرد ترمز ایمنی (پاراشوت)</p>

            <p>شناسایی سرعت زیاد بدون فعال شدن وسیله حفاظتی اضافه سرعت به طرف بالا</p>

            <p>شاسایی سرعت زیاد با فعال شدن وسیله حفاظتی اضافه سرعت به طرف بالا</p>

            <p>بررسی آزاد شدن (از درگیری در آمدن) گاورنر</p>

            <p>بررسی کشش در طناب فولادی گاورنر</p>

            <p>بررسی وسایل حفاظتی در برابر اضافه سرعت کابین به سمت بالا</p>

            <p>آشکارسازی حرکت ناخواسته کابین با درهای باز (اطلاعاتی)</p>

            <p>کنترل فعال شدن وسیله محافظتی جلوگیری از حرکت ناخواسته کابین با درهای باز</p>

            <p>بررسی برگشت به حالت اولیه ضربه گیرها</p>

            <p>بررسی کشش وسیله ای که اطلاعات مربوط به موقعیت کابین را انتقال می دهد (کلیدهای حد نهایی)</p>

            <p>کلید حد نهایی برای آسانسورهای کششی</p>

            <p>بررسی قفل بودن در کابین</p>

            <p>بررسی موقعیت چرخ دستی قابل برداشتن (برای حرکت نجات اضطراری)</p>

            <p>بررسی کشش وسیله ای که اطلاعات مربوط به موقعیت کابین را انتقال می دهد (دور انداز اجباری)</p>

            <p>بررسی شتاب منفی در ضربه گیر با کورس کمتر</p>

            <p>شل شدگی طناب یا زنجیر در آسانسورهای با کشش مثبت</p>

            <p>بررسی کنترل کلید اصلی توسط کنتاکتور قطع کننده مدار</p>

            <p>بررسی هم سطح سازی و هم سطح سازی مجدد</p>

            <p>بررسی کشش وسیله ای که اطلاعات مربوط به موقعیت کابین را انتقال می دهد (برای هم سطح سازی و هم سطح سازی مجدد)</p>

            <p>وسیله متوقف کننده در عملکرد بازرسی</p>

            <p>وسیله ی متوقف کننده روی سیستم محرکه آسانسور</p>

            <p>وسیله متوقف کننده روی پانل (های) تست و اضطراری</p>
            </td>
        </tr>
    </tbody>
</table>

<p>&nbsp;</p>
<p></p>
                                                <hr class="bg-danger border-2 border-top border-warning">

                                                                                        </div>

BahmanMD
تخصص : PHPDeveloper
@BahmanMD 2 سال پیش مطرح شد
1

@ramin.mor47 برای من که بخوبی کار میکنه، نمیدونم شما چطور تست میکنین:
 تصویر


Ramin Mor
تخصص : کارشناس آی تی (برنامه نویسی)
@ramin.mor47 2 سال پیش مطرح شد
0

@BahmanMD
خب همونجور که میبینید ساختار جدول به هم میخوره. کد های html رو نگاه کنید از جدول استفاده شده.
خروجی مد نظرم حفظ ساختار قبلی هست. نه اینکه متن خام بهم بده. در کل بازم ممنون بخاطر راهنماییتون


BahmanMD
تخصص : PHPDeveloper
@BahmanMD 2 سال پیش مطرح شد
1

@ramin.mor47
شما در بک دارین این عمل رو انجام میدین و نمیتونین تگهای HTML رو مستثنی کنین، اگر به اینصورت میخواین میتونین اطلاعاتی که در بین <> قرار دارن رو در یک آرایه قرار بدین، بعد متن ها رو هم در یک آرایه جدا و در متنها جستجو کنین و در نهایت به حالت اول که بصورت کدهای HTML بودن برگردونین.
اما این شاید خیلی منطقی نباشه و بهتر باشه در بک فقط مشخص بشه که کدام سلول جدول در دیتابیس دارای حرف جستجو شده هست و بعد توسط جاوااسکریپت در سمت کلاینت این حرف یا کلمه جستجو شده مارک بشن.
موفق و شاد باشید.


Ramin Mor
تخصص : کارشناس آی تی (برنامه نویسی)
@ramin.mor47 2 سال پیش مطرح شد
0

در جدول هم به صورت html ذخیره شده.
اگر امکان این مورد باشه که سمت بک اند این مورد جستجو صحیح انجام بشه که عالی. ولی خب هیچ ایده ای به ذهنم نمیرسه.


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

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