2010-08-05 28 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. 我们再次将我们的数组放在一起作为一个字符串,将每个元素分开一个&。