Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP更新变量中的url_Php_String - Fatal编程技术网

PHP更新变量中的url

PHP更新变量中的url,php,string,Php,String,如何在id=50之后添加&extra=video id始终是数字 url在?id=50之后可以有许多其他变量 &extra=video应添加在第一个&之前和50之后(id的值) 它将以这种方式使用: $link = http://site.com/view/page.php?id=50&reviews=show echo'; 谢谢。ID总是第一个post参数吗?如果是这样,那么您可以执行某种字符串操作。使用strpos($link,&“)查找要插入的位置。然后根据该位置执行一些s

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

  • id
    始终是数字
  • url在
    ?id=50之后可以有许多其他变量
  • &extra=video
    应添加在第一个
    &
    之前和
    50
    之后(id
    的值)
它将以这种方式使用:

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

谢谢。

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

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

有关我上面提到的一些字符串操作函数,请参见此链接:

正如特雷弗农所说,顺序无关紧要。但是,如果出于某种原因确实需要if,只需使用

  • parse_url
    获取查询字符串
  • parse\u str
    创建参数数组
  • 阵列拼接
    以插入参数
  • http\u build\u query
    重新生成正确的查询字符串

我建议使用专门针对url解析的函数,而不是一般的字符串函数:

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

这会帮你的

$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)));

  • Explode将在每个&处拆分链接字符串,因此它不关心url中有多少元素

  • 第一个元素是所有元素,包括第一个&符号之前的id=##。所以我们附加了你想在后面出现的任何东西

  • 我们将数组重新组合成一个字符串,用&分隔每个元素


  • 为什么字符串中的位置如此重要?无论其位置如何,它仍将被解释为查询字符串属性。显然,将其附加到url会更容易。您几分钟前刚刚问过这个问题。当时有一个很好的答案,现在有什么不同?@Scott Saunders的问题被删除,该解决方案不起作用。
    $link.='&extra=video'除非你能为你的约束证明需要在查询中间显式地定位“Ext=视频”string@Treffynnon我已经更新了这个问题。事实上,url很长,我不知道它到底是如何结束的。表单中使用了post方法,它提供了许多post变量。只是想添加这段代码并正常工作,似乎在id=50后添加变量并不是bas解决方案,我会看到它并知道一切都正常。使用字符串函数进行url解析可能会对不同的url产生意外的结果(特别是无效的url)…我同意。因此,为什么我问它是否是第一个post参数,并说这是一个黑客解决方案。我不为它感到骄傲,但它很早……我真的很喜欢http\u build\u url
    ,但应该提到的是,默认情况下不包括pecl http扩展。
    <?php 
        $linkArray = explode('&',$link);
        $linkArray[0] += '&extra=video';
        $link = implode('&',$linkArray);
    ?>