2012-05-31 25 views
3

我有drupal 7的問題,可能涉及一些PHP的幫助。我已經創建了一個來自Google警報的RSS源,我將其映射到字段中。我已經成功映射到除鏈接模塊字段外的所有字段,在這些字段中,我添加了一個字段格式器,通過將相應的url服務器查詢附加到訂閱源URL來創建pagepeeker屏幕截圖。 Feed通過將項目URL(鏈接)正確地放入域中來完成其工作。我對pagepeeker或鏈接模塊有問題,因爲下面的情況會持續發生。鏈接模塊或pagepeeker格式化問題在drupal 7

要recap-

谷歌快訊飼料 - > Link模塊場 - > pagepeeker截圖格式

這裏的錯誤

的是Google快訊提供的網址是

http://www.google.com/url?sa=X&q=http://www.beautyjunkiesunite.com/WP/2012/05/30/whats-new-anastasia-beverly-hills-lash-genius/&ct=ga&cad=CAcQARgAIAEoATAAOABA3t-Y_gRIAlgBYgVlbi1VUw&cd=F7w9TwL-6ao&usg=AFQjCNG2rbJCENvRR2_k6pL9RntjP66Rvg

當鏈接顯示時,我得到:

http://pagepeeker.com/thumbs.php?size=m&url=www.google.com/url

它切割URL的網址,並沒有得到其餘的網址。

下面是pagepeeker用來解析url的代碼嗎?

<?php 

function _pagepeeker_format_url($url, $domain_only = FALSE) { 
if (filter_var($url, FILTER_VALIDATE_URL) === FALSE) { 
return FALSE; 
} 

// try to parse the url 
$parsed_url = parse_url($url); 
if (!empty($parsed_url)) { 
    $host = (!empty($parsed_url['host'])) ? $parsed_url['host'] : ''; 
    $port = (!empty($parsed_url['port'])) ? ':' . $parsed_url['port'] : ''; 
    $path = (!empty($parsed_url['path'])) ? $parsed_url['path'] : ''; 
    $query = (!empty($parsed_url['query'])) ? '?' . $parsed_url['query'] : ''; 
    $fragment = (!empty($parsed_url['fragment'])) ? '#' . $parsed_url['fragment'] : ''; 

if ($domain_only) { 
    return $host . $port; 
} 
else { 
    return $host . $port . $path . $query . $fragment; 
} 
} 

return FALSE; 
} 

難道這是問題嗎?

請讓我知道我可以用任何方式澄清。

我需要的是得到處理的整個URL,而不僅僅是一個截斷

謝謝!

回答

1

我在SO或drupal SO頁面看到過類似的問題,但找不到它,所以我在這裏再次寫下「我的方式」。

<?php 


function _pagepeeker_format_url($url, $domain_only = FALSE) { 
if (filter_var($url, FILTER_VALIDATE_URL) === FALSE) { 
return FALSE; 
} 

//$url = 'http://www.google.com/url?sa=X&q=http://www.beautyjunkiesunite.com/WP/2012/05/30/whats-new-anastasia-beverly-hills-lash-genius/&ct=ga&cad=CAcQARgAIAEoATAAOABA3t-Y_gRIAlgBYgVlbi1VUw&cd=F7w9TwL-6ao&usg=AFQjCNG2rbJCENvRR2_k6pL9RntjP66Rvg'; 
// Now we use parse_url to split the url to an array with url parts. 
$parsed_url = parse_url($url); 
// $parsed_url['query'] is 'sa=X&q=http://www.beautyjunkiesunite.com/WP/2012/05/30/whats-new-anastasia-beverly-hills-lash-genius/&ct=ga&cad=CAcQARgAIAEoATAAOABA3t-Y_gRIAlgBYgVlbi1VUw&cd=F7w9TwL-6ao&usg=AFQjCNG2rbJCENvRR2_k6pL9RntjP66Rvg' 
// ";" can also be used to separate params. But & is the usual one so using it. 
$queryParts = explode('&', $parsed_url['query']); 

    $params = array(); 
    foreach ($queryParts as $param) { 
     $item = explode('=', $param); 
     // sa = X, etc. 
     $params[$item[0]] = $item[1]; 
    } 
//$params is now an array with query parts. 
// $params['sa'] = 'X' , q = 'http://www.beautyjunkiesunite.com/WP/2012/05/30/whats-new-anastasia-beverly-hills-lash-genius', etc. 

if ($domain_only){ 
$new_url_parsts = parse_url($params['q']); 
return $new_url_parts['host']; 
} 
else{ 
return $params['q']; 
} 
+0

嗨,感謝這是一個巨大的幫助!謝謝 !我注意到,參數和參數是這樣的假設是這樣,我也得到一個意外的$結束錯誤,當我添加它,但如果我添加返回FALSE;在返回$ params ['q']之後,錯誤消失了,但是拋出了一個新的錯誤,注意:在_pagepeeker_format_url()中有未定義的索引:q這是好開始謝謝 - – naeluh

+0

OMG對不起 替換$ parsed_url = parse_url('$ URL'); with $ parsed_url = parse_url($ url); (編輯答案) –

+0

嗨非常感謝!注意:_pagepeeker_format_url()中未定義的索引:q,注意:_pagepeeker_format_url()中未定義的偏移量:1,注意:未定義的索引:query_pagepeeker_format_url()中的查詢。有沒有一種方法來定義這些項目,因爲模塊現在沒有生成任何URL?我google了一些這個,它說,也許isset可以工作的東西,或可能是這個新的代碼沒有在模塊的其他部分聲明,或者它是這個函數的獨佔?再次感謝你的所有幫助你的真棒! – naeluh