2012-03-29 3 views
0

私のPHPスクリプトは、マクロが含ま===ショートリンク===。このマクロは===ショートリンクは、私はそれが===ショートリンク===に起因示したスクリプトを実行すると、このhttp://site.com/2012/blog-post.html のようなURLが含まれている===トリムリンク(内部に見える)

<?php 
$gtemplate=<<<EOF 
===shortlink=== 
EOF; 
?> 

EOF容器の中に座っています。 URLはhttp://site.com/2012/blog-post.htmlです。 私はsite.comとドメイン名のみを表示するには、このマクロからURLをトリミングする必要があります 。どのようにPHPの正規表現を使用してこのマクロでそれをトリミングする方法を私にお勧めしますか?このマクロは===ショートリンクを====に戻し、その後、トリミング、その後、特別なVARに返却しなければならないよう

が見えます。 お元気ですか?

この

$urlpage = '===shortlink==='; 
preg_match_all("/((?:[a-z][a-z\\.\\d\\-]+)\\.(?:[a-z][a-z\\-]+))(?![\\w\\.])/", $urlpage, $replurl, PREG_PATTERN_ORDER); 

    $replurl= '===shortlink==='; 

のようなものを試してみましたが、それは動作しません。この簡単な交換で私を助けてください。

答えて

1

なぜparse_url()を使わないのでしょうか?

<?php 
    $url = "http://site.com/2012/blog-post.html"; 

    $parsed = parse_url($url); 
    echo $parsed["host"]; 
+0

感謝、しかし、私はコンテナにそれを呼び出すために再び===マクロ===ショートリンクとしてトリミングURLを返す必要があります。 –

+1

私はあなたが期待している出力を正確に理解していません。あなたは、ホストが必要だと言った。 'site.com'、これはあなたが持っているものです。ほかには何か欲しい?その場合は、正確に指定してください。 –

+0

マクロ===ショートリンク=== URL自体を含んでいます。私はそれからのURLを単にドメインに置き換えて結果を=== backlink === backに戻したいと思う。 –

0

ここでは完全な作業コードを見ることができます:ctrtard.com特別な感謝の意を表します。

<?php 
function trim_url_to_root_domain($target) { 
/* Usage: 
* echo trim_url_to_root_domain("http://mytarget.com"); 
* or 
* echo ucfirst(trim_url_to_root_domain("http://mytarget.com")); // uppercase first letter 
*/ 
    // trim http, https, and // 
    $target = str_replace("http:", "", $target); 
    $target = str_replace("https:", "", $target); 
    $target = str_replace("//", "", $target); 

    // check for dots 
    $dots = substr_count($target, '.'); 
    if ($dots > 1) { // if there are more than 1 dots, we need to remove subdomain 
     $first_dot = strpos ($target, "."); 
     $target = substr($target, $first_dot+1, strlen($target)); 
    } 

    // find the last slash, this should be the slash just before directory info 
    $last_slash = strripos($target, "/"); 
    if ($last_slash > 0) { 
     $target = substr($target, 0, $last_slash); 
    } 

    // find last slash one more time, to handle targets like /domain.com 
    $last_slash = strripos($target, "/"); 
    if ($last_slash !== FALSE) { 
     $target = substr($target, 1, strlen($target)); 
    } 

    // normalize target so it's all lower case 
    $target = strtolower($target); 

    return $target; 
} 


echo trim_url_to_root_domain("http://mytarget.com"); 

echo ucfirst(trim_url_to_root_domain("http://mytarget.com")); 
?> 
関連する問題