替换以下网址上的字符串的最佳方法或最佳实践是什么
http://www.mysite.com/somefolder/123kf3lkf/abc.jpg
我想从上面的 url 中替换值 '123kf3lkf'。
我不能使用基本字符串替换,因为该部分的值可以是任何东西。唯一的规则是它将是实际文件名“abc.jpg”之前的部分?
我想替换上述网址上的文字以形成以下网址
http://www.mysite.com/somefolder/mynewtext/abc.jpg
我需要用 PHP 做到这一点
替换以下网址上的字符串的最佳方法或最佳实践是什么
http://www.mysite.com/somefolder/123kf3lkf/abc.jpg
我想从上面的 url 中替换值 '123kf3lkf'。
我不能使用基本字符串替换,因为该部分的值可以是任何东西。唯一的规则是它将是实际文件名“abc.jpg”之前的部分?
我想替换上述网址上的文字以形成以下网址
http://www.mysite.com/somefolder/mynewtext/abc.jpg
我需要用 PHP 做到这一点
你可以试试这个
$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.使用explode并寻找LAST-1的地方。
$url_parts = explode("/",$url);
$string2replace = $url_parts[count($url_parts)-2];
$newString = str_replace($string2replace , "somethingnew" , $url);
2.使用正则表达式。
正则表达式解决方案:
$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