hassen zouari
hassen zouari

Reputation: 971

Remove HTML tags from Strings on laravel blade

I want to remove HTML tags (all) from a string on laravel blade ...

code

{!! \Illuminate\Support\Str::words($subject->body, 5,'...')  !!}

output (example)

<p>hassen zouari</p>

I want it be like this

hassen zouari

Upvotes: 61

Views: 130376

Answers (12)

Boss COTIGA
Boss COTIGA

Reputation: 1042

Keep htmlentities, line break, ...

Long code, but that satisfies me in all situations

@php
$txt = nl2br(Str::words(strip_tags($var->txt), 30, '...'));
$txt = preg_replace('/(<br\s*\/?>\s*){2,}/', '<br />', $txt);
@endphp
{!! $txt !!}

Explications

  1. Remove HTML tags
  2. Reduice string to 30 words
  3. Replace new lines with BR tags
  4. Remove contiguous BR tags

Upvotes: 0

Hadayat Niazi
Hadayat Niazi

Reputation: 2480

when we used strip_tags, it will not convert the whitespace into space, it will display as HTML like &nbsp!; this. How to remove this and the tags too?

{!! Str::limit(strip_tags($subject->body), $limit = 50, $end = '...') !!}

Upvotes: 1

Ahsan Najam
Ahsan Najam

Reputation: 363

PHP 8.1 and from Laravel 9, we can do this:

$taglessBody = strip_tags((string) $subject->body);

Upvotes: 0

ABDO
ABDO

Reputation: 130

This will solve your issue

{!! strip_tags( \Illuminate\Support\Str::words($subject->body, 5,'...')) !!}" }}

Upvotes: 3

Expert Suggestion
Expert Suggestion

Reputation: 401

you must know about the diffrence between {{ }} and {!! !!}

1.1) laravel have predefined you can load variable exact value by using {{$a }}

or

1.2)laravel loading with strip remove {!! $a !!}

please take it seriously this qustion answer its protect your website from cross site scripting excecution.for example if user save his name but he puted script alert.then if you using core php and not handling the strip tags then this script excution when page laod

so i give you some more harmful example 1)like i puted my name as script or in a about section and in script i write some code who get the browser cookies of open website and curl request for saving on my server.

so you understand this whats happen if i got the each user cookies by curl and i just puted a cross script in about filed and its saved in database.

Upvotes: 4

Wahsei
Wahsei

Reputation: 307

Add the below code into your helpers

  if (! function_exists('words')) {
        /**
         * Limit the number of words in a string.
         *
         * @param  string  $value
         * @param  int     $words
         * @param  string  $end
         * @return string
         */
        function words($value, $words = 100, $end = '...')
        {
            return \Illuminate\Support\Str::words($value, $words, $end);
        }
    }

& use this in your blade

{{ words($sentence, $limit = 20, $end = ' ..... more') }}

Upvotes: 5

Swapnil Nath
Swapnil Nath

Reputation: 1

use this in your code

$allcms = json_decode(strip_tags(Cms::where('status','active')->get()),true);

  return response()->json(['status' => 'success','message' =>'All CMS','data' => $allcms]);

Upvotes: 0

Ridwan Kasim
Ridwan Kasim

Reputation: 229

just by doing this {!! $value !!} will solve your problem

Upvotes: 1

upendra
upendra

Reputation: 349

You can use

{{ strip_tags( $value->description ) }}

Upvotes: 8

Paul Basenko
Paul Basenko

Reputation: 1015

As for me, I use this construction:

{!! str_limit(strip_tags($post->text), $limit = 50, $end = '...') !!}

I hope, my code was helpful for somebody)

Upvotes: 12

Alexey Mezenin
Alexey Mezenin

Reputation: 163768

Try to use strip_tags() function:

http://php.net/manual/en/function.strip-tags.php

Update: Try to do something like this in a controller:

$taglessBody = strip_tags($subject->body);

Then pass this variable into a blade template and use it instead of $subject->body.

Upvotes: 112

Sahith Vibudhi
Sahith Vibudhi

Reputation: 5205

You can use strip_tags($yourString); to strip the html tags. In blade you could achieve this by

{{ strip_tags($yourString) }} 
//if your string is <h1> my string </h1>
//output will be my string.

hope that is helpful :)

Upvotes: 32

Related Questions