PHP удаляет символы после последнего вхождения символа в строку

Таким образом, строка тестового примера может быть:

http://example.com/?u=ben

или

http://example.com

Я пытаюсь удалить все после последнего вхождения '/', но только если он не является частью "http://". Возможно ли это??

У меня это до сих пор:

$url = substr($url, 0, strpos( $url, '/'));

Но не работает, удаляет все после первого '/'.

Ответы

Ответ 1

Вы должны использовать инструмент, предназначенный для этого типа работы, 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";
}

Пример:

·> 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

Ответ 2

Вы должны использовать функцию strrpos не strpos; -)

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

Ответ 3

$cutoff = explode("char", $string); 
echo $cutoff[0]; // 2 for what you want and 3 for the index

также

echo str_replace ( "http://", "", $str);