去掉 ?我的网址中的char用于自定义api

时间:2019-05-12 05:24:30

标签: php guzzle

我正在使用带有自定义api的Guzzle 6,我想更改网址 从 http://my.domain.com/test?key1=5&key2=ABC 对此 http://my.domain.com/test/key1=5&key2=ABC

如何删除“?”网址和第一个参数之间的字符

$endpoint = "http://my.domain.com/test";
$client = new \GuzzleHttp\Client();
$key1= 5;
$key2= ABC;

$response = $client->request('GET', $endpoint, ['query' => [
    'key1' => $key1,
    'kei2' => $key2

]]);

3 个答案:

答案 0 :(得分:0)

尝试下面的代码。

<?php
echo str_replace("?","/","http://my.domain.com/test.php?key1=5&key2=ABC");
?>

答案 1 :(得分:0)

您可以使用两种方式...

  1. preg_replace

  2. str_replace

这种做法是preg_replace

$uri = 'http://my.domain.com/test.php?key1=5&key2=ABC';
$uri = preg_replace('/[?]/', '/', $uri);
var_dump($uri);
//Output http://my.domain.com/test.php/key1=5&key2=ABC

preg_replace慢于str_replace

现在,这种做法是str_replace

$uri = 'http://my.domain.com/test.php?key1=5&key2=ABC'; $uri = str_replace(['?'],['/'],$uri); var_dump($uri); //Output http://my.domain.com/test.php/key1=5&key2=ABC

str_replacepreg_replace

如果要替换多个字符串,请在['?','key']之后使用逗号

$uri = str_replace(['?','key'],['/'],$uri);

如果要将第二个字符串与其他任何字符串都作为第二个字符串,请使用['?','key'], ['/', 'element']

$uri = str_replace(['?','key'], ['/', 'element'],$uri);

str_replace的作用是替换特定的输入字符串,并且仅替换字符串。

现在preg_replace所做的是它使用正则表达式来匹配您的结果。

只是一个旁注preg_matchpreg_match_allpreg_replace,以及更多的PHP preg函数是相关的。

答案 2 :(得分:0)

您可以将URL分成多个部分,然后按自定义顺序将其放在一起。

$expectedUrl = 'http://my.domain.com/test/key1=5&key2=ABC';

$urlParts = parse_url('http://my.domain.com/test?key1=5&key2=ABC');
$resultUrl = $urlParts['scheme'] . '://' . $urlParts['host'] . $urlParts['path'] . '/' . $urlParts['query'];

var_dump(
    $resultUrl === $expectedUrl
);