2010-08-05 104 views
-1
$link = http://site.com/view/page.php?id=50&reviews=show 

我們如何在id=50之後添加&extra=videoPHP更新變量中的url

  • id總是數字。
  • 網址可以有後?id=50
  • &extra=video應該第一&前加入許多其他的變量和50(的id值)後

將這樣使用:

echo '<a href="' . $link . '">Get video</a>'; 

謝謝。

+8

爲什麼字符串中的位置如此重要?無論它的位置如何,它仍然會被解釋爲查詢字符串屬性。將它附加到URL顯然會更容易。 – Treffynnon 2010-08-05 14:02:23

+0

你幾分鐘前剛剛問過這個問題。那麼有一個很好的答案,現在有什麼不同? – 2010-08-05 14:05:05

+0

@Scott桑德斯問題被刪除,該解決方案不起作用。 – James 2010-08-05 14:07:49

回答

1

ID是否始終是第一個帖子參數?如果是這樣,那麼你可以做一些字符串操作。使用strpos($link, "&")找出你想插入的位置。然後根據該位置做幾個substr(),然後將它們全部附加在一起。我知道它的那種哈克,但它肯定會起作用。

$pos = strpos($link, "&"); 
$first = substr($link, 0, $pos); 
$last = substr($link, $pos); 
$extra = "&extra=video"; 
$newLink = $first . $extra . $last; 

請參閱此鏈接一些我上面提到的字符串處理函數:http://us3.php.net/strings

+0

使用字符串函數進行url解析可能會產生意外的結果(特別是無效的url),用於不同的url ... – 2010-08-05 14:11:57

+0

我同意。因此,爲什麼我問這是否是第一個後期參數,並表示這是一個拙劣的解決方案。我並不爲此感到自豪,但它的早期... – Siege898 2010-08-05 14:18:29

2

由於Treffynnon說,訂單罕事項。不過,如果你真的需要的,如果由於某種原因,只是用

  • parse_url得到查詢字符串
  • parse_str創建參數
  • 數組
  • array_splice注入參數
  • http_build_query重建一個正確的查詢字符串
1

我會建議使用函數指定ically針對URL解析,不是一般的字符串函數:

$link = 'http://site.com/view/?id=50&reviews=show'; 
$query = array(); 
parse_str(parse_url($link, PHP_URL_QUERY), $query); 
$query['extra'] = 'video'; 
$linkNew = http_build_url($link, array('query' => http_build_query($query))); 
+0

我真的很喜歡'http_build_url',但應該提到默認情況下不包括pecl HTTP擴展。 – Wrikken 2010-08-05 14:22:26

2

這會爲你做它

<?php 
    $linkArray = explode('&',$link); 
    $linkArray[0] += '&extra=video'; 
    $link = implode('&',$linkArray); 
?> 
  1. 爆炸將在每個&拆分鏈路串,所以也就沒有在意網址中有多少元素。

  2. 第一個元素,將包括第一個&符號前的id = ##。所以我們追加任何你想要出現的東西。

  3. 我們再次將我們的數組放在一起作爲一個字符串,將每個元素分開一個&。