我正在使用带有自定义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
]]);
答案 0 :(得分:0)
尝试下面的代码。
<?php
echo str_replace("?","/","http://my.domain.com/test.php?key1=5&key2=ABC");
?>
答案 1 :(得分:0)
您可以使用两种方式...
preg_replace
慢
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_replace
比preg_replace
如果要替换多个字符串,请在['?','key']
之后使用逗号
$uri = str_replace(['?','key'],['/'],$uri);
如果要将第二个字符串与其他任何字符串都作为第二个字符串,请使用['?','key'], ['/', 'element']
$uri = str_replace(['?','key'], ['/', 'element'],$uri);
str_replace
的作用是替换特定的输入字符串,并且仅替换字符串。
现在preg_replace
所做的是它使用正则表达式来匹配您的结果。
只是一个旁注preg_match
,preg_match_all
和preg_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
);