URL обновления PHP в переменной - PullRequest
0 голосов
/ 05 августа 2010
$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 ]

2 голосов
/ 05 августа 2010

Это сделает за вас

<?php 
    $linkArray = explode('&',$link);
    $linkArray[0] += '&extra=video';
    $link = implode('&',$linkArray);
?>
  1. Explode разделит строку ссылки на каждый &, поэтому не имеет значения, сколько элементов у вас в URL.

  2. Первым элементом будет все, включая id = ## перед первым знаком &. Поэтому мы добавляем все, что вы хотите, чтобы появиться после него.

  3. Мы снова собираем наш массив в виде строки, разделяя каждый элемент символом &.

2 голосов
/ 05 августа 2010

Как говорит Треффиннон, порядок редко имеет значение.Однако, если вам действительно нужно, если по какой-то причине просто используйте

  • parse_url, чтобы получить строку запроса
  • parse_str для создания массива параметров
  • array_splice для ввода параметра
  • http_build_query для восстановления правильной строки запроса
1 голос
/ 05 августа 2010

Я бы предложил использовать функции, специально предназначенные для разбора 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)));
1 голос
/ 05 августа 2010

Всегда ли 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...