0

たとえば、次の URL を入力します。

http://www.example.com/

そして、私はそれが私を返すことを望みます:

http://www.example.com

URLをそのようにフォーマットするにはどうすればよいですか? これを行うための組み込みの PHP 関数はありますか?

4

3 に答える 3

3

これはそれを行う必要があります:

$url = 'http://parkroo.com/';
if ( substr ( $url, 0, 11 ) !== 'http://www.' )
    $url = str_replace ( 'http://', 'http://www.', $url );

$url = rtrim ( $url, '/' );

これはうまくいくはずです:

$urlInfo = parse_url ( $url );
$newUrl = $urlInfo['scheme'] . '://';
if ( substr ( $urlInfo['host'], 0, 4 ) !== 'www.' )
    $newUrl .= 'www.' . $urlInfo['host'];
else
    $newUrl .= $urlInfo['host'];

if ( isset ( $urlInfo['path'] ) && isset ( $urlInfo['query'] ) )
    $newUrl .= $urlInfo['path'] . '?' . $urlInfo['query'];
else
{
    if ( isset ( $urlInfo['path'] ) && $urlInfo['path'] !== '/' )
        $newUrl .= $urlInfo['path'];

    if ( isset ( $urlInfo['query'] )  )
        $newUrl .= '?' . $urlInfo['query'];
}

echo $newUrl;
于 2013-01-31T09:24:45.173 に答える
0

ライブデモ

<?php
function changeURL($url){
 if(empty($url)){
  return false;
 }
 else{
  $u = parse_url($url);
  /*
  possible keys are:
  scheme
  host
  user
  pass
  path
  query
  fragment
  */

  foreach($u as $k => $v){
   $$k = $v;
  }
  //start rebuilding the URL
  if(!empty($scheme)){
   $newurl = $scheme.'://';
  }
  if(!empty($user)){
   $newurl.= $user;
  }
  if(!empty($pass)){
   $newurl.= ':'.$pass.'@';
  }
  if(!empty($host)){
    if(substr($host, 0, 4) != 'www.'){
     $host = 'www.'. $host;
    }
   $newurl.= $host;
  }
  if(empty($path) && empty($query) && empty($fragment)){
         $newurl.= '/';
  }else{
  if(!empty($path)){
   $newurl.= $path;
  }
  if(!empty($query)){
   $newurl.= '?'.$query;
  }
  if(!empty($fragment)){
   $newurl.= '#'.$fragment;
  }
  }
  return $newurl;
 }

}
echo changeURL('http://yahoo.com')."<br>";
echo changeURL('http://username:password@yahoo.com/test/?p=2')."<br>";
echo changeURL('ftp://username:password@yahoo.com/test/?p=2')."<br>";
/*
http://www.yahoo.com/
http://username:password@www.yahoo.com/test/?p=2
ftp://username:password@www.yahoo.com/test/?p=2
*/
?>
于 2013-01-31T10:11:57.640 に答える
0

parse_url を使用して URL の一部を取得し、URL を作成できます。またはさらに簡単に、trim(' http://example.com/ ', '/');

于 2013-01-31T09:33:53.970 に答える