2015-04-15 30 views
1

我設法得到封面圖片,但我無法得到全尺寸的。我讀過一些其他的stackoverflow文章,而不是從Facebook的API中獲取它們,他們正在取代網址(我現在正在做什麼)。Facebook的api:得到全尺寸的覆蓋

https://graph.facebook.com/me?fields=cover 

A)在最好的情況我想Facebook的返回全尺寸覆蓋,如果它是可能的,所以我並不需要做的情況下B.

B)如果情況A是不可能,是否有可能改變我現在正在做的正則表達式?如果情況A不可行,我不確定這是最好的方法。

$total_chars = strlen($response->cover->source); 
$last_occurence = strrpos($response->cover->source, '/'); 
$new_haystack = substr_replace($response->cover->source, '', $last_occurence, ($total_chars - $last_occurence)); 
$first_occurence = strrpos($new_haystack, '/'); 
$new_cover_url = substr_replace($response->cover->source, '', ($first_occurence + 1), ($last_occurence - $first_occurence)); 

因爲:

https://fbcdn-sphotos-g-a.akamaihd.net/hphotos-ak-xpa1/t31.0-8/p180x540/11084131_1381639242163565_3886632224714594501_o.jpg

需求是:

https://fbcdn-sphotos-g-a.akamaihd.net/hphotos-ak-xpa1/t31.0-8/11084131_1381639242163565_3886632224714594501_o.jpg

(p180x540 /已被刪除)。

+0

我不確定你現在在做什麼。是你想刪除總是'p180x540 /'的目錄嗎?如果是這樣的話'str_replace'應該可以做到。 – chris85

+0

除了p180x540可能不總是相同的,這就是爲什麼我沒有使用str_replace。 – Brieuc

+0

什麼是一致的,總是'pnumbersxnumbers /'或總是'p3numbersx3numbers /'?或者不是始終以'p'開始? – chris85

回答

1

Preg_replace將完成這項工作。然而,就未知的角落案例而言,我加入的表達方式並不穩固。

$fb = "https://fbcdn-sphotos-g-a.akamaihd.net/hphotos-ak-xpa1/t31.0-8/p180x540/11084131_1381639242163565_3886632224714594501_o.jpg"; 
    $fb1 = "https://fbcdn-sphotos-g-a.akamaihd.net/hphotos-ak-xpa1/t31.0-8/11084131_1381639242163565_3886632224714594501_o.jpg"; 

    $fb = preg_replace('/p[0-9]+x[0-9]+\//i', '', $fb); 

    echo ($fb); 
+0

是的,正如你所說的「不知道固體術語」,很難預測它是否總是「pnumbersxnumbers」。這就是爲什麼我的猜測只能使用從「/」到「/」。無論如何,謝謝你的解決方案。 – Brieuc

+1

無論在URL中的位置。 但是,這種表示法有一個含義:p =像素; {寬度}×{身高}。無論是來自定位還是格式,您都必須在任何情況下維護您的腳本URL更改。 –

+1

是的,我希望有案例A的解決方案。這將是最安全的。 – Brieuc

2

這是一個非正則表達式的方法。很明顯,存在目錄更改的缺陷,但應在描述的實例中工作。

$string = 'https://fbcdn-sphotos-g-a.akamaihd.net/hphotos-ak-xpa1/t31.0-8/p180x540/11084131_1381639242163565_3886632224714594501_o.jpg'; 
$replace = array_reverse(explode('/', $string)); 
echo str_replace($replace[1] .'/', '', $string); 
+0

我也喜歡這種方法。謝謝。 – Brieuc