2012-05-24 84 views
16

Vì vậy, các trường hợp chuỗi thử nghiệm có thể là:PHP loại bỏ ký tự sau xuất hiện cuối cùng của một nhân vật trong một chuỗi

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

Hoặc

http://example.com 

Tôi đang cố gắng để loại bỏ tất cả mọi thứ sau khi xảy ra cuối cùng của a '/' nhưng chỉ khi nó không phải là một phần của 'http: //'. Điều này có thể !?

Tôi có điều này cho đến nay:

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

Nhưng không hoạt động, dải tắt tất cả mọi thứ sau khi lần đầu tiên '/'.

+0

Tôi không biết bạn đang sử dụng điều này cho điều gì nhưng nếu bạn đang cố gắng loại bỏ mã theo dõi chiến dịch, các URL kết quả thường sẽ hoạt động nhưng không phải lúc nào ;-) Ví dụ: tôi nghĩ YouTube cần "?" –

Trả lời

13

Bạn nên sử dụng các công cụ được thiết kế cho loại công việc này, 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"; 
} 

Ví dụ:

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

cũng

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

+0

Tôi nghĩ rằng nó sẽ là $ cutoff [1]; thay vì chỉ mục 0 (Nếu tôi hiểu kịch bản của bạn). Ngoài ra, tôi không thực hiện lý do tại sao bạn phát nổ "char"? –

+0

"char" = "/", cũng như chỉ số 0 - Tôi đã viết nhận xét quá – Seb

61

Bạn phải sử dụng strrpos hoạt động không strpos ;-)

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

Tôi nghĩ đây là câu trả lời hay nhất cho tiêu đề của câu hỏi! Tôi sẽ chỉnh sửa tiêu đề cho một cái gì đó như "... ký tự trong một URL" nếu nó không cho câu trả lời này. –

+1

nếu không có sự cố xảy ra, nó sẽ loại bỏ tất cả, bất kỳ sửa đổi nào cho số – mokNathal

+0

@mokNathal đó là xấu xí nhưng ... 'substr ($ url, 0, strrpos ($ url, '/')! == false? Strrpos ($ url, '/'): strlen ($ url)); ' – billynoah

Các vấn đề liên quan