Sometimes we need to replace some character or spaces with another character in laravel or any other programming languages similarly today, i am going to explain how can we replace space with dash “-” symbol with spaces between words such as replace space with dash underscore in laravel to replace-space-with-dash-underscore-in-laravel. This is very useful concept which I recently used in making the slug of pages because these URL should be seo friendly so I made the slugs using dash by replacing spaces between words of the title of page so in following example I am explaining how we can make slugs in laravel.
Step 1
First, I need to make a controller where I can fetch the content of the page so that I can show this detail on web page. To do that I need to create a controller that can fetch the data from database so to create a controller you need to run the following command.
php artisan make:controller title now your controller is successfully created.
You need to write a function which can be able to fetch the data such as following.
public function articles()
{
$qry="article";
$articles = Blog::where('status', 1)->where('category','article')->paginate(10);
return view('layouts.articles',compact('articles'));
}
Step 2
Create a blade file which can list your articles and when someone click the title it should go to detail page where it can display slug replaced with “-” symbol so following is the code to write that stuff.
<div class="container">
<ul class="course__listing">
@foreach($articles as $article)
<li>
<div class="row gx-2 gy-4 gy-md-0 gx-md-4 align-items-center">
<div class="col-md-4 col-lg-3">
<a href="{{ url('/')}}/article-details/{{$article->id }}" class="d-block">
<img src="{{ asset('storage/blogs/'.$article->picture) }}" class="img-fluid" alt="">
</a>
</div><!--.//col-->
<div class="col-md-8 col-lg-9">
<h3 class="h5 fw-medium">
<a href="{{ url('/')}}/article-details/{{$article->id }}/{{$article->title }}">{{ substr($article->title, 0, 40) }}</a>
</h3>
<ul class="info__list">
<li class="d-flex">
<div class="caption">
{!! substr($article->article, 0, 1800) !!}
</div>
</li>
</ul>
<div class="row g-2 align-items-center mt-2">
<div class="col-md-8 order-md-2">
<div class="d-flex flex-wrap justify-content-md-end align-items-center date">
<i class="fa fa-calendar me-2"></i>
<span>{{ \Carbon\Carbon::parse($article->created_at)->isoFormat('MMM Do YYYY @ H:mm:ss')}}</span>
</div>
</div>
<div class="col-md-4 order-md-1">
<a href="{{ url('/')}}/article-details/{{$article->id }}/{{str_replace(' ','-',substr($article->title, 0, 100))}}" class="btn btn-primary fs-6 fw-medium rounded">Details</a>
</div>
</div><!--.//row-->
</div><!--.//col-->
</div><!--.//row-->
</li><!--.//li-->
@endforeach
</ul><!--.//ul-->
{{$articles->links('pagination::bootstrap-4')}}
</div>
So following is the code which is used to replace the spaces with dash.
<a href="{{ url('/')}}/article-details/{{$article->id }}/{{str_replace(' ','-',substr($article->title, 0, 100))}}" class="btn btn-primary fs-6 fw-medium rounded">Details</a>
.
The function str_replace() is used to replace space with “-” in title of the post.
{{str_replace(' ','-',substr($article->title, 0, 100))}} is the full code to replace spaces with dash symbol.You can avoid using the substr() method you can use it in simple way such as following.
{{str_replace(' ','-',$article->title)}}
