Rifki
Rifki

Reputation: 17

How to insert an additional path into URL using PHP?

Let say I've this URL:

http://example.com/image-title/987654/

I want to insert "download" to the part between "image-title" and "987654" so it would look like:

http://example.com/image-title/download/987654/

help would be greatly appreciated! thank you.

Upvotes: 0

Views: 2604

Answers (3)

Brian Heese
Brian Heese

Reputation: 654

There are a number of ways to do this in PHP:

  • Split and reconstruct using explode(), array_merge, implode()
  • Using substring()
  • Using a regular expression
  • Using str_replace

Assuming all the url's conform to the same structure (image-title/[image_id]) i recommend using str_replace like so:

$url = str_replace('image-title', 'image-title/download', $url);

If however image-title is dynamic (the actual title of the image) i recommend splitting and reconstructing like so:

$urlParts = explode('/', $url);
$urlParts = array_merge(array_slice($urlParts, 0, 3), (array)'download', array_slice($urlParts, 3));
$url = implode('/', $urlParts);

Upvotes: 0

swapnesh
swapnesh

Reputation: 26732

Not very well formatted, but i think this is what you need

$mystr= 'download';
$str = 'http://example.com/image-title/987654/';
$newstr = explode( "http://example.com/image-title",$str);
$constring =  $mystr.$newstr[1];


$adding = 'http://example.com/image-title/';
echo $adding.$constring;  // output-- http://example.com/image-title/download/987654/

Upvotes: 0

user153498
user153498

Reputation:

Assuming your URIs will always be the same (or at least predictable) format, you can use the explode function to split the URI into each of its parts, and then use array_splice to insert elements into that array, and finally use implode to put it all back together into a single string.

Note that you can insert elements into an array by specifying the $length parameter as zero. For example:

$myArray = array("the", "quick", "fox");
array_splice($myArray, 2, 0, "brown");
// $myArray now equals array("the", "quick", "brown", "fox");

Upvotes: 3

Related Questions