0

以下の URL の文字列を置き換える最善の方法またはベスト プラクティスは何ですか?

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

上記の URL の値「123kf3lkf」を置き換えたいと思います。

そのセクションの値は何でもかまいませんので、基本的な文字列置換は使用できません。唯一のルールは、実際のファイル名「abc.jpg」の前のセクションになるということですか?

上記の URL のテキストを置き換えて、以下の URL を形成したいと思います。

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

PHPでこれを行う必要があります

4

4 に答える 4

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
于 2012-10-15T10:10:32.153 に答える
0

1 つのアプローチは次のとおりです。

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

コードパッドのデモ

参考文献:

于 2012-10-15T10:18:37.120 に答える
0

さらに 2 つのアイデアを提案できます。

1.LAST explode-1の場所を使用して探します。

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

2.正規表現を使用します。

于 2012-10-15T10:18:50.407 に答える
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
于 2012-10-15T10:32:55.657 に答える