PHP remove characters after last occurrence of a character in a string PHP remove characters after last occurrence of a character in a string php php

PHP remove characters after last occurrence of a character in a string


You must use strrpos function not strpos ;-)

substr($url, 0, strrpos( $url, '/'));


You should use the tool that is designed for this type of job, parse_url

url.php

<?php$urls = array('http://example.com/foo?u=ben',                'http://example.com/foo/bar/?u=ben',                'http://example.com/foo/bar/baz?u=ben',                'https://foo.example.com/foo/bar/baz?u=ben',            );function clean_url($url) {    $parts = parse_url($url);    return $parts['scheme'] . '://' . $parts['host'] . $parts['path'];}foreach ($urls as $url) {    echo clean_url($url) . "\n";}

Example:

ยท> php url.php                                                                                                 http://example.com/foohttp://example.com/foo/bar/http://example.com/foo/bar/bazhttps://foo.example.com/foo/bar/baz


Actually, a simpler solution to what you want to achieve is to play with a few string manipulation functions of PHP.

First of all, you need to find the position of the last occurrence of the '/'. You can do this by using the strrpos() function (be careful, it is with 2 r);

Then, if you provide this position as a negative value, as a second parameter to the substr() function, it will start the search of the substring from the end.

The second problem is that you want as result the part of the strings that is at the LEFT of the last '/'. To achieve this, you will have to provide substr() with a negative value to the third parameter which will indicate how many characters you want to remove.

To be sure of how many parameters you need to remove, you will have to extract the string part at the RIGHT of the '/' first, and then count its length.

//so given this url:$current_url = 'http://example.com/firstslug/84'//count how long is the part to be removed$slug_tbr = substr($current_url, strrpos($current_url, '/')); // '/84'$slug_length = strlen(slug_tbr); // (3)/*get the final result by giving a negative value to both second and third parameters of substr() */$back_url = substr($current_url, -strrpos($current_url, '/'), -$slug_length);//result will be http://example.com/firstslug/