Moritz
Moritz

Reputation: 389

Extract specific part from URL

I have to extract a specific part of an URL.

Example

original URLs

http://www.example.com/PARTiNEED/some/other/stuff
http://www.example.com/PARTiNEED

in case 1 I need to extract

/PARTiNEED/

and in case 2 I need to extract the same part but add an additional "/" at the end

/PARTiNEED/

What I've got right now is this

$tempURL = 'http://'. $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
$tempURL = explode('/', $tempURL);
$tempURL = "/" . $tempURL[3] . "/";

is there a more convenient way to do this or is this solution fine?

Upvotes: 0

Views: 104

Answers (5)

iainn
iainn

Reputation: 17433

It's normally a good idea to use PHP's built in functions for things like this where possible. In this case, the parse_url method is designed for parsing URLs.

In your case:

// Extract the path from the URL
$path = parse_url($url, PHP_URL_PATH);

// Separate by forward slashes
$parts = explode('/', $path);

// The part you want is index 1 - the first is an empty string
$result = "/{$parts[1]}/";

Upvotes: 3

Prafulla Kumar Sahu
Prafulla Kumar Sahu

Reputation: 9703

This will give you proper idea about your requirment.

<?php
    $url_array = parse_url("http://www.example.com/PARTiNEED/some/other/stuff");
    $path = $url_array['path'];
    var_dump($path);
?>

now you can use string explode function to get your job done.

Upvotes: 1

chandan
chandan

Reputation: 123

Here this should solve your problem

// check if the var $_SERVER['REQUEST_URI'] is set
if(isset($_SERVER['REQUEST_URI'])) {
  // explode by /
  $tempURL = explode('/', $_SERVER['REQUEST_URI']);
  // what you need in in the array $tempURL;
  $WhatUNeed = $tempURL[1];
} else {
  $WhatUNeed = '/';
}

Dont worry about the trailing slash, that can be added anytime in your code.

$WhatUNeed = $tempURL[1].'/';

Upvotes: 1

Rui Silva
Rui Silva

Reputation: 433

You don't need this part:

'http://'. $_SERVER['SERVER_NAME']

you can just do:

$tempURL = explode('/', $_SERVER['REQUEST_URI']);
$tempURL = "/" . $tempURL[1] . "/";

Edited index from 0 to 1 as commented.

Upvotes: 1

Bozidar Sikanjic
Bozidar Sikanjic

Reputation: 747

Maybe regex suits your needs better?

$tempURL = "http://www.example.com/PARTiNEED/some/other/stuff"; // or $tempURL = "http://www.example.com/PARTiNEED
$pattern = '#(?<=\.com)(.+?)(?=/|$)#';

preg_match($pattern, $tempURL, $match);

$result = $match[0] . "/";

Upvotes: 1

Related Questions