У меня есть полные URL-адреса в виде строк, но я хочу удалить http: // в начале строки, чтобы отобразить URL-адрес (например: www.google.com, а не http://www.google.com )
Может кто-нибудь помочь?
$str = 'http://www.google.com'; $str = preg_replace('#^https?://#', '', $str); echo $str; // www.google.com
Это будет работать как для http://
и для https://
Вам вообще не нужно регулярное выражение. Вместо этого используйте str_replace .
str_replace('http://', '', $subject); str_replace('https://', '', $subject);
Объединенный в одну операцию следующим образом:
str_replace(array('http://','https://'), '', $urlString);
Лучше используйте это:
$url = parse_url($url); $url = $url['host']; echo $url;
Упрощен и работает для http://
https://
ftp://
и почти всех префиксов.
Почему бы не использовать parse_url
вместо этого?
Если вы настаиваете на использовании RegEx:
preg_match( "/^(https?:\/\/)?(.+)$/", $input, $matches ); $url = $matches[0][2];
Чтобы удалить http: // domain (или https) и получить путь:
$str = preg_replace('#^https?\:\/\/([\w*\.]*)#', '', $str); echo $str;
Да, я думаю, что str_replace () и substr () быстрее и чище, чем регулярное выражение. Для этого существует безопасная быстрая функция. Легко понять, что именно. Примечание: return substr ($ url, 7) и substr ($ url, 8), если вы также хотите удалить //.
// 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; }