替换URL上的字符串的最佳做法是什么

时间:2012-10-15 10:05:22

标签: php string replace

在下面的网址

上替换字符串的最佳方式或最佳做法是什么?

http://www.mysite.com/somefolder/123kf3lkf/abc.jpg

我想从上面的url替换值'123kf3lkf。

我不能使用基本的字符串替换,因为该部分的值可以是任何东西。 唯一的规则是它将是实际文件名'abc.jpg'之前的部分?

我想替换上面网址上的文字以形成以下网址

http://www.mysite.com/somefolder/mynewtext/abc.jpg

我要求用PHP执行此操作

4 个答案:

答案 0 :(得分:2)

你可以试试这个

$replace = "mynewtext" ;                                            
$url = "http://www.mysite.com/somefolder/123kf3lkf/abc.jpg?test=123kf3lkf";
                                            ^-----   Note this  ---^

$find = basename(pathinfo($url,PATHINFO_DIRNAME));
echo str_replace("/$find/", "/$replace/", $url);

输出

 http://www.mysite.com/somefolder/mynewtext/abc.jpg?test=123kf3lkf
                                                            ^--- Sill Intact

答案 1 :(得分:0)

一种方法如下:

<?php
 $str = "http://www.mysite.com/somefolder/123kf3lkf/abc.jpg";
 $parts = explode('/', $str);
 $parts[count($parts) - 2] = "myNewText";
 $remixedURL = implode('/',$parts);
 echo "$remixedURL";
?>

Codepad demo

参考文献:

答案 2 :(得分:0)

我可以提出另外两个想法:

1.使用explode并寻找最后一个地方。

$url_parts = explode("/",$url);
$string2replace = $url_parts[count($url_parts)-2];
$newString = str_replace($string2replace , "somethingnew" , $url);

2.使用Regex。

答案 3 :(得分:0)

正则表达式解决方案:

$url         = 'http://www.mysite.com/somefolder/123kf3lkf/abc.jpg?foo=123kf3lkf';
$replacement = 'xxxxx';
$replaced    = preg_replace('@^(.+/)(?:[^/]+)(/[^\.]+(?:\..*)?(?:\?.*)?)$@',
                            '\\1' . $replacement . '\\2', $url);
echo $replaced; // http://www.mysite.com/somefolder/xxxxx/abc.jpg?foo=123kf3lkf