我是PHP的初学者。 在解决以下问题时需要帮助。
这是原始字符串
/hs/?page_id=27&file=filename.jpg
我希望将其替换为以下内容。
/hs/wp-content/gallery/filename.jpg
请注意,文件名和ID号每次都会更改。 所以我想使用通配符可能是替换“?”之间字符的更好选择。和“=”。
如何使用reg_replace实现这一目标? 或者还有其他解决方案吗?
答案 0 :(得分:1)
如果您想避免使用正则表达式,可以使用PHP parse_url
和parse_str
函数:
$url= '/hs/?page_id=27&file=filename.jpg';
$parsed = parse_url($url);
parse_str($parsed['query'], $query);
$new_url = $parsed['path'] . 'wp-content/gallery/' . $query['file'];
<强> Ideone demo. 强>
答案 1 :(得分:0)
在?
和=
之间替换字符的最简单方法是使用.*
正则表达式部分,该部分将匹配“任何内容,重复任意次数”
$result = preg_replace('[/hs/\?.*=]', '/hs/wp-content/gallery/', $input);
更通用的解决方案,如果要提取任何输入URL的file=
组件,即使参数的顺序不同,也可以是:
$result = preg_replace('[.*file=([^&]*).*]', '/hs/wp-content/gallery/\1', $input);