请帮助我创建正则表达式来替换字符串,例如:
/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_url
和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/