Upper
Upper

Reputation: 13

PHP regular expression - get text between slashes

I need the following but I don't know how to do this .. with Regular Expression.

First problem

From $uri = '/page/subpage/?vars=bla' I want to extract only '/page/subpage/';

Second problem

The $uri = '/page/subpage/?vars=bla' I want to convert it to a friendly version '/page/subpage/vars-bla/'; Right now I can make it '/page-subpage-vars-bla/' but I want to keep the slashes.

Thanks is advance!

Upvotes: 1

Views: 2476

Answers (2)

Niels
Niels

Reputation: 49919

First problem solution:

preg_match("/(.*)\\/([^\\/]+)/", '/page/subpage/?vars=bla', $split);
echo $split[1] . "/";

Output:

/page/subpage/

Second problem:

preg_match("/(.*)\\/([^\\/]+)/", '/page/subpage/?#$Q@DFSDFvars=bla', $split);
echo $split[1] . "/" . str_replace("=", "-", $split[2]) . "/";

Output:

/page/subpage/?#$Q@DFSDFvars-bla/

Upvotes: 2

eillarra
eillarra

Reputation: 5097

Why not use parse_url()?

$uri = '/page/subpage/?vars=bla';
parse_url($uri);

Results...

array
  'path' => string '/page/subpage/' (length=14)
  'query' => string 'vars=bla' (length=8)

Upvotes: 0

Related Questions