在普通字符之间匹配PHP中的唯一字符串

I'm trying to do some string matching in PHP. I have the following url string in a variable:

phones/gift.nintendo-3ds/handset.blackberry-9790.html

I want remove the /gift.nintendo-3ds from the above, but the gift will always be different.

Any ideas? I want the url variable to look like this after each call different gifts:

phones/handset.blackberry-9790.html

Thanks

Try with:

$input  = 'phones/gift.nintendo-3ds/handset.blackberry-9790.html';
$output = preg_replace('(gift\.[^/]*\/)', '', $input);
preg_replace('/\/gift\.[^/]*/', '', $url);

Matches /gift. then anything till the next slash and replaces it with blank.

You could split it apart, remove the second part you do not want to keep and then concat it again:

$parts = explode('/', $url, 3);
unset($parts[1]);
$result = implode('/', $parts);

This is not using any regular expression as you might have thought about but probably tells you about some other useful functions.

Demo: http://codepad.org/a1pNW8J6

A regex variant could be:

echo preg_replace('~^([^/]+)(/[^/]+)~', '$1', $url);

Demo: http://codepad.org/vyR04xMn