Removing "www." from search query

Viewed 262

Currently I'm removing https:// and http:// with following code:

$r=\Input::get('searchQuery');
        
        $Query = preg_replace( "#^[^:/.]*[:/]+#i", "", $r);
        $Query=rtrim($Query, "/");

I need to remove www. as well. What should I add to the code inorder to remove www.
Eg: When I search for https://www.example.com/ It should only search for example.com

5 Answers

It is really easy, you can use preg_replace with a simple regex:

$query = preg_replace('/^((http:\/\/|https:\/\/)?(www\.)?)/i', '', $text);

See this example, so you can understand my regex.

The following regex works on any string with an optional "http(s)", "www." and trailing slash:

$r=\Input::get('searchQuery');
$Query = preg_replace('/^(https?\:\/\/)?(www.)?|\/$/', "", $r);

How it works:

^ start of the string.

(https?\:\/\/)? optionally match "http(s)://" (the "s" is also optional).

(www.)? optionally match: "www.".

|\/$ match "/" if it is the last character of the string.

You can use Laravel Helpers Method preg_replace_array. preg_replace_array function replaces a given pattern in the string sequentially useing an array:

$string = 'https://www.example.com/'
$query = preg_replace_array('#^[^:/.]*[:/www.?]+#i', [''], $string); // example.com/
$query = rtrim($query, '/'); // example.com

Input: https://www.example.com/
Output: example.com

$r=\Input::get('searchQuery');
$query = preg_replace_array('#^[^:/.]*[:/www.?]+#i', [''], $r);  
$query = rtrim($query, '/'); // google.com

Your OUT PUT will be google.com

I hope You Got Your Solution .

code might get bit long but this works everytime, you can add more fuctionality by getting position of / inside of string , working code as below

 <?php
       // $r=\Input::get('searchQuery');
       // $searchQuery = $r; 

       $searchQuery = "www.google.com";

        $searchQuery = str_replace("https://","",$searchQuery);
        $searchQuery = str_replace("http://","",$searchQuery);
      $searchQuery = str_replace("www.","",$searchQuery);
            ?>
<?php #to remove only last / from string
         $lastchar = substr($searchQuery , -1);
    $length = strlen($searchQuery);

    if ($lastchar == "/")
    {
    $searchQuery  = substr_replace($searchQuery, "" , -1);
    }
    else {
    $searchQuery  = $searchQuery ;
    }
    echo $searchQuery; ?>
Related