Удалить известные значения параметров из строки запроса - PullRequest
0 голосов
/ 26 марта 2019

Я использую сценарии PHP.

У меня есть URL-адрес типа http://example.com? Tag = test1 & creative = 165953 & creativeASIN = B07BH2N15X & linkCode = df0 & ascsubtag = test2 . В строке запроса tag = test1 и ascsubtag = test2 я знаю значения test1 & test2, а не ключ. Теперь я хочу удалить тег тега & ascsubtag из URL для повышения осведомленности.

Ожидаемый результат: http://example.com? Creative = 165953 & creativeASIN = B07BH2N15X & linkCode = df0 . Как я могу добиться этого простым способом.

Я попробовал следующий код,

$a = parse_url("http://example.com?tag=test1&creative=165953&creativeASIN=B07BH2N15X&linkCode=df0&ascsubtag=test2");
parse_str($a['query'], $queryStr);
$interchanged = array_flip($queryStr);
unset($interchanged['test1']);
unset($interchanged['test2']);
echo $a['scheme'] . "://" . $a['host'] . (isset($pURL['path']) ? $pURL['path'] : '') . "?" . http_build_query(array_flip($interchanged));

Есть ли другой способ добиться этого?

1 Ответ

0 голосов
/ 01 апреля 2019

Более простое решение (ИМХО и более удобное в обслуживании) заключается в использовании array_filter() для удаления любых значений, которые вам не нужны в исходном коде, а не метода flip / unset / flip. .

$a = parse_url("http://example.com?tag=test1&creative=165953&creativeASIN=B07BH2N15X&linkCode=df0&ascsubtag=test2");
parse_str($a['query'], $queryStr);
$interchanged = array_filter($queryStr, function($value) { return ( $value != "test1" && $value != "test2");});
echo $a['scheme'] . "://" . $a['host'] . (isset($pURL['path']) ? $pURL['path'] : '') . "?" . http_build_query($interchanged);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...