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


regex to replace string with params


请帮助我创建正则表达式来替换字符串,例如:
/technic/k-700/?type=repair
到类似
字符串/维修/K-700/
代替k-700可以是任何其他组合(在/之间),而不是维修只能是套件
我需要图案和更换,请。这对我来说太难了。
我的结果不适用于Wordpress

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

你可以尝试这样的事情:

$test = preg_replace(
    '~/'w+/(['w-]+)/'?type=('w+)~i',
    '/$2/$1/',
    '/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_urlparse_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/