PHP preg_replace - 替换特殊字符之间的字符

时间:2013-09-19 16:23:25

标签: php preg-replace

我是PHP的初学者。 在解决以下问题时需要帮助。

这是原始字符串

/hs/?page_id=27&file=filename.jpg

我希望将其替换为以下内容。

/hs/wp-content/gallery/filename.jpg

请注意,文件名和ID号每次都会更改。 所以我想使用通配符可能是替换“?”之间字符的更好选择。和“=”。

如何使用reg_replace实现这一目标? 或者还有其他解决方案吗?

2 个答案:

答案 0 :(得分:1)

如果您想避免使用正则表达式,可以使用PHP parse_urlparse_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);