正则表达式用参数替换字符串

regex to replace string with params


请帮助我创建用于替换字符串的正则表达式,例如:
/technic/k-700/?type=修复

这样的字符串 /repair/k-700/
代替 k-700 可以是任何其他组合(在 / 之间)而不是 repair 可以是只有 套件.
我需要图案和替换品,谢谢。这对我来说太难了。
我的结果不适用于 Wordpress:

$pattern = '/technic/([0-9a-zA-Z-]+)/?type=$matches[1]';
$replacement = '/?/([0-9a-z-]+)/';

您可以尝试这样的操作:

$test = preg_replace(
    '~/\w+/([\w-]+)/\?type=(\w+)~i',
    '///',
    '/technic/k-700/?type=repair'
);
var_dump($test);

结果将是:

string(14) "/repair/k-700/"

您不需要正则表达式,只需使用 explode():

即可
$str = '/technic/k-700/?type=repair';
$first = explode('/', explode('?', $str)[0]);
$second = explode('=', explode('?', $str)[1]);
$first[1] = $second[1];
echo $new = implode("/",$first);

//output: /repair/k-700/

为了完整起见,或者您以后需要访问 url 部分。
这是使用 parse_url and parse_str

的解决方案
$str = '/technic/k-700/?type=repair';

$url = parse_url($str);

$bits = explode('/',trim($url['path'],'/'));

parse_str($url['query']);

print '/' . $type . '/' . $bits[1] . '/' ;

哪个会输出

/repair/k-700/