Laravel

Replace space with dash underscore in Laravel

Ravindra Kumar

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)}}

Ravindra Kumar

Ravindra is a passionate full stack developer and dedicated blogger with a flair for crafting user-friendly web applications and insightful articles. With expertise spanning front-end and back-end technologies, Ravindra brings ideas to life through innovative coding solutions.

Suggested Reading

How to Clear Cache in Laravel Without Using Artisan Commands

When working with Laravel, caching plays a key role in improving your application’s performance by storing compiled configurations, routes, views, and other data. However, during development or after making changes, you may need to clear the cache to see your latest updates. Usually, developers use Artisan commands like php artisan cache:clear or php artisan optimize:clear. […]

Upload (restore/import) a MySQL database backup via the command prompt (CLI)

To upload (restore/import) a MySQL database backup via the command prompt (CLI), you can use the mysql command-line utility. Here’s how: You must follow these requirement You must have a MySQL backup file (e.g., backup.sql) MySQL server should be installed and running You should have credentials for the MySQL user If you are working with […]

How to add new column in laravel migration without losing data

To add a new column in a Laravel migration without losing existing data, you can create a new migration file that alters the existing table. Laravel makes this easy using the php artisan make:migration command with the --table option. Step-by-Step Guide: You can generate a new migration php artisan make:migration add_column_name_to_your_table_name_table --table=your_table_name Replace column_name with […]

imagick php extension must be installed to use this driver in Laravel

It means that your Laravel app (or a package like Intervention Image, Spatie Media Library, or Laravel Snappy) is trying to use the Imagick image processing library, but it’s not installed or enabled on your server. If you’re using Ubuntu/Debian (Linux server): sudo apt-get update sudo apt-get install -y php-imagick sudo service apache2 restart # […]

Attempt to read property “id” on null in Laravel

The error message “Attempt to read property ‘id’ on null” in Laravel typically occurs when you’re trying to access the id property of an object that is null. This commonly happens when you’re expecting an object to be returned (such as a database record), but instead, null is returned. You can handle this null value […]

How to check first record in Laravel blade file

Here’s how to check the first iteration in a Blade @foreach loop: You can use Laravel’s built-in $loop variable: @foreach ($all_categories_ as $vals) <li class="nav-item" role="presentation"> <button class="nav-link p-3 border-0 text-start lh-sm w-100 rounded-0 fs-6 fw-medium {{ $loop->first ? 'active' : '' }}" id="pills-navTab{{ $vals->id }}-tab" data-bs-toggle="pill" data-bs-target="#pills-navTab{{ $vals->id }}" type="button" role="tab" aria-controls="pills-navTab{{ $vals->id }}" […]