我在执行以下操作时遇到了一些麻烦。
http://www.google.com - > www.google.com/
https://google.com - > www.google.com/
google.com - > www.google.com /
我尝试删除https:// or http://
,确保将www.
添加到网址的开头,然后在网址中添加一个尾随斜杠(如果不存在)。
感觉我已经把大部分内容弄清楚,但我无法让str_replace()
按照我的意愿去做。
根据我的理解,这是如何使用str_replace
:
$string = 'Hello friends';
str_replace('friends', 'enemies', $string);
echo $string;
// outputs 'Hello enemies' on the page
这是我到目前为止所做的:
$url = 'http://www.google.com';
echo reformat_url($url);
function reformat_url($url) {
if ( substr( $url, 0, 7 ) == 'http://' || substr( $url, 0, 8 ) == 'https://' ) { // if http:// or https:// is at the beginning of the url
$remove = array('http://', 'https://');
foreach ( $remove as $r ) {
if ( strpos( $url, $r ) == 0 ) {
str_replace($r, '', $url); // remove the http:// or https:// -- can't get this to work
}
}
}
if ( substr( $url, 0, 4 ) != 'www.') { // if www. is not at the beginning of the url
$url = 'www.' . $url; // prepend www. to the beginning
}
if ( substr( $url, -1 ) !== '/' ) { // if trailing slash does not exist
$url = $url . '/'; // add trailing slash
}
return $url; // return the formatted url
}
对于格式化URL的方式的任何帮助将不胜感激;我对str_replace删除http://或https://的错误更感兴趣。如果有人能够提供一些有关我正在做错误的见解,那将非常感激。
答案 0 :(得分:5)
尝试parse_url()
。
返回值
在严重格式错误的网址上,
parse_url()
可能会返回FALSE。如果省略component参数,则返回关联数组。阵列中至少存在一个元素。此数组中的潜在键是:
scheme
- 例如http
host
port
user
pass
path
- 之后
query
- 在问号?
- 之后
fragment
- 在标记#
因此,您可以使用以下代码访问域:
$url = "https://www.google.com/search...";
$details = parse_url($url);
echo($details['host']);
答案 1 :(得分:4)
待办事项
$url = str_replace($r, '', $url);
而不是
str_replace($r, '', $url);
因为str_replace
返回一个新字符串;它不会改变$url
。
答案 2 :(得分:1)
$url = str_replace('http://', '', $url);
$url = str_replace('https://', '', $url);
if(substr( $url, 0, 4 ) != 'www.')
{
$url = 'www.'.$url;
}
$length = strlen($url);
if($url[$length-1] != '/')
$url = $url.'/';
答案 3 :(得分:1)
public static function formatURLs($t) {
$t = ' '.$t;
$t = preg_replace("#([\s]+)([a-z]+?)://([a-z0-9\-\.,\?!%\*_\#:;~\\&$@\/=\+]+)#i", "\\1<a href=\"\\2://\\3\" rel=\"nofollow\" target=\"_blank\">\\3</a>", $t);
$t = preg_replace("#([\s]+)www\.([a-z0-9\-]+)\.([a-z0-9\-.\~]+)((?:/[a-z0-9\-\.,\?!%\*_\#:;~\\&$@\/=\+]*)?)#i", "\\1<a href=\"http://www.\\2.\\3\\4\" rel=\"nofollow\" target=\"_blank\">\\2.\\3\\4</a>", $t);
$t = preg_replace("#([\s]+)([a-z0-9\-_.]+)@([\w\-]+\.([\w\-\.]+\.)?[\w]+)#i", "\\1<a href=\"mailto:\\2@\\3\">\\2@\\3</a>", $t);
$t = substr($t, 1);
return $t;
}
我的功能,希望有所帮助