Tôi có URL đầy đủ dưới dạng chuỗi, nhưng tôi muốn xóa http: // ở đầu chuỗi để hiển thị URL độc đáo (ví dụ: www.google.com.vn của http://www.google.com)PHP Regex để xóa http: // khỏi chuỗi
Ai đó có thể trợ giúp?
Tôi có URL đầy đủ dưới dạng chuỗi, nhưng tôi muốn xóa http: // ở đầu chuỗi để hiển thị URL độc đáo (ví dụ: www.google.com.vn của http://www.google.com)PHP Regex để xóa http: // khỏi chuỗi
Ai đó có thể trợ giúp?
$str = 'http://www.google.com';
$str = preg_replace('#^https?://#', '', $str);
echo $str; // www.google.com
Điều đó sẽ làm việc cho cả hai http://
và https://
Nếu bạn nhấn mạnh vào việc sử dụng RegEx:
preg_match("/^(https?:\/\/)?(.+)$/", $input, $matches);
$url = $matches[0][2];
Chỉ vì lợi ích của sự hoàn chỉnh, tôi sẽ thêm một 's? 'Sau http. Và vâng, tôi biết đó không phải là câu hỏi của anh ấy. . . :)) –
Ý tưởng hay, cập nhật. – Overv
Tại sao không sử dụng parse_url
để thay thế?
Bạn không cần biểu thức chính quy nào cả. Sử dụng str_replace để thay thế.
str_replace('http://', '', $subject);
str_replace('https://', '', $subject);
Kết hợp thành một hoạt động đơn lẻ như sau:
str_replace(array('http://','https://'), '', $urlString);
Điều này cũng sẽ loại bỏ bất kỳ kết quả phù hợp sau của http (s): //, mà có thể không phải là một vấn đề - nhưng nó có thể được.Ví dụ, nếu nó được sử dụng trong một chuỗi truy vấn mà không có urlencoding thích hợp – aland
Better sử dụng này:
$url = parse_url($url);
$url = $url['host'];
echo $url;
đơn giản và làm việc cho http://
https://
ftp://
và gần như tất cả tiền tố.
Đây là câu trả lời đúng! –
câu trả lời đúng cuối cùng !! +50 –
Rất vui khi các bạn thích nó :) –
Để loại bỏ http://domain (hoặc https) và để có được đường dẫn:
$str = preg_replace('#^https?\:\/\/([\w*\.]*)#', '', $str);
echo $str;
Yeah, tôi nghĩ rằng str_replace() và substr() là nhanh hơn và sạch hơn so với regex. Đây là một chức năng nhanh chóng an toàn cho nó. Thật dễ dàng để xem chính xác những gì nó làm. Lưu ý: trả về substr ($ url, 7) và substr ($ url, 8), nếu bạn cũng muốn xóa //.
// slash-slash protocol remove https:// or http:// and leave // - if it's not a string starting with https:// or http:// return whatever was passed in
function universal_http_https_protocol($url) {
// Breakout - give back bad passed in value
if (empty($url) || !is_string($url)) {
return $url;
}
// starts with http://
if (strlen($url) >= 7 && "http://" === substr($url, 0, 7)) {
// slash-slash protocol - remove https: leaving //
return substr($url, 5);
}
// starts with https://
elseif (strlen($url) >= 8 && "https://" === substr($url, 0, 8)) {
// slash-slash protocol - remove https: leaving //
return substr($url, 6);
}
// no match, return unchanged string
return $url;
}
Tại sao bạn cần regex? Tại sao không chỉ xóa 7 ký tự đầu tiên? –
Kiểm tra điều này: http://stackoverflow.com/questions/4875085/php-remove-http-from-link-title – stefandoorn
@OliCharlesworth: Nó có thể là 8 ký tự cũng như với 'https: // ' – Sarfraz