4

こんにちは、このURL文字列があります。これは、正規表現を使用して抽出する必要がありますが、右側から左側に抽出する必要があります。例えば:

http://localhost/wpmu/testsite/files/2012/06/testimage.jpg

そして、私はこの部分を抽出する必要があります:

2012/06/testimage.jpg

これはどのように行うことができますか?前もって感謝します...

更新:URLの「ファイル」のみが定数であるため、「ファイル」の後のすべてを抽出したいと思います。

4

7 に答える 7

6

必ずしも正規表現を使用する必要はありません。

$str = 'http://localhost/wpmu/testsite/files/2012/06/testimage.jpg';
$result = substr( $str, strpos( $str, '/files/') + 7);
于 2012-07-01T17:55:04.187 に答える
2

explode()を使用して、最後の3つの(またはロジックに基づいて)パーツを選択します。要素の数を見つけることにより、部品の数を決定できます

于 2012-07-01T17:45:54.977 に答える
2

これにより、ファイルの後にすべてが表示されます。

$string = 'http://localhost/wpmu/testsite/files/2012/06/testimage.jpg';
preg_match('`files/(.*)`', $string, $matches);
echo $matches[1];

更新: しかし、DougOwingsソリューションの方がはるかに高速になると思います。

于 2012-07-01T17:51:50.693 に答える
0

あなたがチェックする必要があるのは私が思うこの関数だけです:

http://php.net/manual/en/function.substr.php

「http:// localhost / wpmu / testsite / files /」の部分が安定している場合は、どの部分を削除するかがわかります。

于 2012-07-01T17:43:24.807 に答える
0
$matches = array();
$string = 'http://localhost/wpmu/testsite/files/2012/06/testimage.jpg';
preg_match('/files\/(.+)\.(jpg|gif|png)/', $string, $matches);
echo $matches[1]; // Just the '2012/06/testimage.jpg' part
于 2012-07-01T17:46:01.560 に答える
0

正規表現の必要はありません:

function getEndPath($url, $base) {
    return substr($url, strlen($base));
}

また、レベルを指定してURLパスの最後の部分を返すより一般的な解決策は次のとおりです。

/**
 * Get last n-level part(s) of url.
 *
 * @param string $url the url
 * @param int $level the last n links to return, with 1 returning the filename
 * @param string $delimiter the url delimiter
 * @return string the last n levels of the url path
 */ 
function getPath($url, $level, $delimiter = "/") {
    $pieces = explode($delimiter, $url);
    return implode($delimiter, array_slice($pieces, count($pieces) - $level));
}
于 2012-07-01T17:57:00.043 に答える
0

私は爆発の簡単な解決策が好きです(ナイトライダーによって提案されているように):

$url="http://localhost/wpmu/testsite/files/2012/06/testimage.jpg";
function getPath($url,$segment){
          $_parts = explode('/',$url);

                  return join('/',array_slice($_parts,$segment));
}

echo getPath($url,-3)."\n";
于 2012-07-01T17:57:59.490 に答える