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

php, substring

Solution

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/foo
http://example.com/foo/bar/
http://example.com/foo/bar/baz
https://foo.example.com/foo/bar/baz

Problem

So the test case string may be: ``` http://example.com/?u=ben ``` Or ``` http://example.com ``` I'm trying to remove everything after the last occurrence of a '/' but only if it's not part of the 'http://'. Is this possible!? I have this so far: ``` $url = substr($url, 0, strpos( $url, '/')); ``` But does not work, strips off everything after first '/'.

Original source

Related problems