正则表达式用参数替换字符串
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/
请帮助我创建用于替换字符串的正则表达式,例如:
/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/