PHP在变量中更新url

时间:2010-08-05 14:00:19

标签: php string

$link = http://site.com/view/page.php?id=50&reviews=show

我们如何在&extra=video之后添加id=50

  • id始终为数字。
  • url在?id=50
  • 之后可以有许多其他变量
  • &extra=video应在第一个&之前和50之后添加(id的值

它将以这种方式使用:

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

感谢。

4 个答案:

答案 0 :(得分:2)

正如Treffynnon所说,这个命令很少发生。但是,如果确实需要,出于某种原因,只需使用

  • parse_url获取查询字符串
  • parse_str创建参数数组
  • array_splice注入参数
  • http_build_query重建正确的查询字符串

答案 1 :(得分:2)

这将为你做到

<?php 
    $linkArray = explode('&',$link);
    $linkArray[0] += '&extra=video';
    $link = implode('&',$linkArray);
?>
  1. 爆炸将在每个&amp;分割链接字符串,因此它不关心您在网址中有多少元素。

  2. 第一个元素,包括第一个&amp;之前的id = ##。标志。所以我们追加你想要的东西。

  3. 我们将数组再次作为字符串放在一起,用&amp;分隔每个元素。

答案 2 :(得分:1)

ID始终是第一个post参数吗?如果是这样,那么你可以jsut做某种字符串操作。使用strpos($link, "&")找出要插入的位置。然后根据该位置执行一些substr(),然后将它们全部附加在一起。我知道它的那种hacky,但肯定会有效。

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

请参阅此链接,了解我上面提到的一些字符串操作函数:http://us3.php.net/strings

答案 3 :(得分:1)

我建议使用专门针对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)));