علیرضا کفایتی
3 سال پیش توسط علیرضا کفایتی مطرح شد
6 پاسخ

ایجاد خروجی متن برای کد های html

سلام
فرض کنید میخواهم متن پیش نمایش مطالب یک سایت را نشان دهم . طبیعتا حتی نباید یک خط کد هم درون در دیتابیس متن به صورت html ذخیره شده است . معمولا از این راه استفاده میکنم که راه بسیار بدی هست :

@php
                $body = str_replace("<p>&nbsp;</p>", "", $article->body);
                $body = str_replace("\n", "", $body);
                $body = str_replace("<p>", "", $body);
                $body = str_replace("</p>", "", $body);
                $body = str_replace("<h1>", "", $body);
                $body = str_replace("</h1>", "", $body);
                $body = str_replace("<h2>", "", $body);
                $body = str_replace("</h2>", "", $body);
                $body = str_replace("<h3>", "", $body);
                $body = str_replace("</h3>", "", $body);
                $body = str_replace("<h4>", "", $body);
                $body = str_replace("</h4>", "", $body);
                $body = str_replace("<h5>", "", $body);
                $body = str_replace("</h5>", "", $body);
                $body = str_replace("<h6>", "", $body);
                $body = str_replace("</h6>", "", $body);
                $body = str_replace("<table>", "", $body);
                $body = str_replace("</table>", "", $body);
                $body = str_replace("<td>", "", $body);
                $body = str_replace("</td>", "", $body);
                $body = str_replace("<th>", "", $body);
                $body = str_replace("</th>", "", $body);
                $body = str_replace("<p", "", $body);
                $body = str_replace("<h1", "", $body);
                $body = str_replace("<strong>", "", $body);
                $body = str_replace("</strong>", "", $body);
                $body = str_replace(" style=", "", $body);
                $body = str_replace(" href=", "", $body);
                $body = str_replace("'", "", $body);
                $body = str_replace('"', "", $body);
                $body = str_replace("<a ", " (یک لینک) ", $body);
                $body = str_replace("</a>", "", $body);
                $body = str_replace(" title", "", $body);
                $body = str_replace(" href", "", $body);
                $body = str_replace("http://", "", $body);
                $body = str_replace("https://", "", $body);
                $body = str_replace(".ir", "", $body);
                $body = str_replace(".com", "", $body);
                $body = str_replace("/", "", $body);
                $body = str_replace("<", "", $body);
                $body = str_replace(">", "", $body);
                @endphp
            {!! mb_substr($body , 0, 130, mb_detect_encoding($body))!!} ...

در این راه یعضی تگ ها نصفه و نیمه حذف می شوند و نمیتوانم مثلا href یک تگ a یا src تگ img را بگیرم .
چون مطمئن هستم راه بهتری هست سوال رو مطرح کردم . لطفا دوستان پاسخ بدهند .


ثبت پرسش جدید
محمدصادق عبداللهی
تخصص : junior full stack developer
@mimsadAlef 3 سال پیش مطرح شد
1

سلام
حداقل یه سرچ می کردید :)
https://www.php.net/manual/en/function.strip-tags.php


علیرضا کفایتی
تخصص : برنامه نویس laravel, vue.js
@alirezakefayati 3 سال پیش مطرح شد
1

@mimsadAlef
تا دلت بخواد سرچ کردم ولی ارور میداد ...


علیرضا کفایتی
تخصص : برنامه نویس laravel, vue.js
@alirezakefayati 3 سال پیش مطرح شد
1

@mimsadAlef
الان یک تست گرفتم دیدم کار میکنه . نمیدونم شاید اشتباه تایپی داشته ...


علیرضا کفایتی
تخصص : برنامه نویس laravel, vue.js
@alirezakefayati 3 سال پیش مطرح شد
1

ولی خوب مثل همونی که خودم نوشتم کار میکنه بلکه بدتر ...


محمدصادق عبداللهی
تخصص : junior full stack developer
@mimsadAlef 3 سال پیش مطرح شد
1

میشه با regex هم این کار رو کرد


علیرضا کفایتی
تخصص : برنامه نویس laravel, vue.js
@alirezakefayati 3 سال پیش مطرح شد
1

@mimsadAlef
لازم نیست . کمی بیشتر تحقیق کردم و فهمیدم این متد strip_tags کمی تو لارول متفاوت هست و باید به این صورت استفاده بشه . :

                    {{ Str::limit(strip_tags($article->body), $limit = 130, $end = '...') }}

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

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