我发现在全局配置文件中包含如下内容很有用:
define('BASE_DIR', '/var/www/u1234567/data/www/somesampledomain.xyz/');
define('BASE_URL', 'https://somesampledomain.xyz/');
这对于在各个地方翻译 url 和路径很有用。虽然为了简单起见,它通常更像:
define('BASE_DIR', realpath('../htdocs/'));
那么你可以:
$path = '/var/www/u1234567/data/www/somesampledomain.xyz/mediaimages/48fa6c736b75e1da485656e97b7d76f9.png';
$url = 'https://somesampledomain.xyz/mediaimages/48fa6c736b75e1da485656e97b7d76f9.png';
function path_to_url($path) {
return preg_replace('/^'.preg_quote(BASE_DIR, '/').'/', BASE_URL, $path, 1);
}
function url_to_path($url) {
return preg_replace('/^'.preg_quote(BASE_URL, '/').'/', BASE_DIR, $url, 1);
}
var_dump(
$url,
path_to_url($path),
$path,
url_to_path($url)
);
输出:
string(77) "https://somesampledomain.xyz/mediaimages/48fa6c736b75e1da485656e97b7d76f9.png"
string(77) "https://somesampledomain.xyz/mediaimages/48fa6c736b75e1da485656e97b7d76f9.png"
string(96) "/var/www/u1234567/data/www/somesampledomain.xyz/mediaimages/48fa6c736b75e1da485656e97b7d76f9.png"
string(96) "/var/www/u1234567/data/www/somesampledomain.xyz/mediaimages/48fa6c736b75e1da485656e97b7d76f9.png"
参考: