2012-05-24 5 views
16

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

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

Или

http://example.com 

Я пытаюсь удалить все после последнего вхождения a '/', но только если он не является частью «http: //». Это возможно!?

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

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

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

+0

Я не знаю, для чего вы это используете, но если вы пытаетесь удалить коды отслеживания кампании, результирующие URL-адреса обычно будут работать, но не всегда ;-) Например, я думаю, что YouTube нуждается в «?» –

ответ

13

Вы должны использовать инструмент, который предназначен для этого вида работы, 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 
0
$cutoff = explode("char", $string); 
echo $cutoff[0]; // 2 for what you want and 3 for the index 

также

эхо str_replace ("HTTP: //", "", $ строка);

+0

Я думаю, что это должно быть $ cutoff [1]; вместо индекса 0 (если я понимаю ваш скрипт). Кроме того, я не понимаю, почему вы взорваетесь «char»? –

+0

"char" = "/", как для индекса 0 - Я тоже написал комментарии – Seb

61

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

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

Я думаю, что это лучший ответ на заголовок вопроса! Я бы отредактировал заголовок что-то вроде «... символ в URL», если бы не этот ответ. –

+1

, если в нем не было обнаружено, что он удаляет все, любой модификатор для этого – mokNathal

+0

@mokNathal это уродливо, но ... 'substr ($ url, 0, strrpos ($ url, '/')! == false? Strrpos ($ url, '/'): strlen ($ url)); ' – billynoah

Смежные вопросы