0

Facebookページからページ名を取得する方法を見つけようとしていますが、http://www.facebook.com/pagenameバージョンから取得する方法はわかりましたが、見た目の長いバージョンからテストして取得する方法がわかりませんこのようにhttp://www.facebook.com/pages/pagename/433425324544。パスがで始まるかどうかをテストするにはどうすればよいですか。また/pages、1 つの関数を使用してすべてからページ名を抽出するにはどうすればよいですか。標準形式でページ名を取得するために使用するものは次のとおりです。

function get_facebook_username( $facebook_url ) { 
$url = $facebook_url;
$result = preg_match("/(https|http)?:\/\/(www\.)?facebook\.com\/?([^\/]*)/", $url, $matches);
$fb_username = 'default value';
if($result == 1){
    $fb_username = $matches[3];
} else {
    return;
}

echo "$fb_username";
}

URLが短縮版にある場合、ユーザー名の最後の文字を切り取ることを除いて、これを行うためのより良い方法を見つけました。例えば。

//---short
$url = http://www.facebook.com/pagename
//---long
$url  = http://www.facebook.com/pages/pagename/7532527927346

<?php
  $url = $facebook_username;
  $path = parse_url($url, PHP_URL_PATH);
  $pathTrimmed = trim($path, 'pages/../0123456789');
  echo $pathTrimmed;
?>

//---short
 pagenam
//---long
 pagename

短いバージョンで最後の文字が抜けているのはなぜですか?

4

1 に答える 1

1

これについて私が行う方法はexplode、以下のコードを使用して URL を配列に配置することです。

$url  = "http://www.facebook.com/pages/pagename/7532527927346";
$result = explode("/", $url);

次の配列を取得します。

array(6) {
  [0]=>
  string(5) "http:"
  [1]=>
  string(0) ""
  [2]=>
  string(16) "www.facebook.com"
  [3]=>
  string(5) "pages"
  [4]=>
  string(8) "pagename"
  [5]=>
  string(13) "7532527927346"
}

次に、単純な if $result[3] == "pages" を使用すると、URL にページが含まれているかどうかを確認できます。

Ninja Edit 爆発の代わりに、preg_split空の配列要素を返さない を使用することもできます。

$result = preg_split("~/~", $url, -1, PREG_SPLIT_NO_EMPTY); 
于 2012-05-15T12:04:44.830 に答える