我正在试图弄清楚如何从Facebook页面获取页面名称,虽然我已经弄清楚如何从http://www.facebook.com/pagename
版本获取它,但我无法弄清楚如何测试和从看起来像http://www.facebook.com/pages/pagename/433425324544
的较长版本中获取它。如何测试以查看路径是否以/pages
开头,如何使用一个函数从中提取页面名称。这是我用来获取标准格式的页面名称。
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";
}
我发现有一种更好的方法可以做到这一点我认为,除非它删除用户名中的最后一个字母,如果网址是缩短版本的话。例如。
//---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
为什么短版本缺少最后一个字母?
答案 0 :(得分: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”将允许你检查网址是否包含页面。
Ninja Edit
也可以使用preg_split
来代替爆炸,它将不返回空数组元素:
$result = preg_split("~/~", $url, -1, PREG_SPLIT_NO_EMPTY);