Есть ли любой способ, которым я могу отобразить местоположение ссылок абсолютно, когда я только ссылаюсь на него относительно.
Т.е. как файл относительно ссылаются...
<a href='../../files/uploaded_file.jpg'>Your Uploaded File</a>
Но я также хотел бы отобразить некоторое текстовое высказывание...
You can link to your file via www.example.com/files/uploaded_file.jpg
Так как выгода, я не хочу к состоянию explicity, каков домен, поскольку сценарий будет использоваться на множестве различных доменов без потребности отредактировать сценарий.
В основном я хочу так или иначе повторить текст, который Вы видите в строке состояния Firefox, когда Вы нависаете над ссылкой.
Сделайте:
var_dump($_SERVER);
и вы увидите, на какой из них вы можете рассчитывать как на url домена.
<a href="<?php echo 'http://'.$_SERVER['HTTP_HOST'] . '/files/uploaded_file.jpg'; ?>">Your file</a>
Предполагается, что страница, содержащая пример кода, находится на расстоянии двух каталогов от корня сайта, например
http://www.example.com/one/two/example-page.php
тогда вы можете сделать это:
<a href='http://<?php echo htmlentities($_SERVER['SERVER_NAME'], ENT_QUOTES)?>/files/uploaded_file.jpg'>Your Uploaded File</a>
Если это предположение неверно и файлы хранятся в каталоге, который по крайней мере на один каталог глубже корня, например.
http: //www.example.com/content/files/uploaded_file.jpg
то вам нужно немного поработать, чтобы получить абсолютный URL.
<?php
$FilesystemPath = str_replace("\\", "/", realpath(dirname(__FILE__) . "/../../files/")) . "/uploaded_file.jpg";
$DocRoot = $_SERVER['DOCUMENT_ROOT'];
$Uri = str_replace($DocRoot, '', $FilesystemPath);
?>
<a href='http://<?php echo htmlentities($_SERVER['SERVER_NAME'] . $Uri, ENT_QUOTES)?>'>Your Uploaded File</a>
В этом примере предполагается, что вы знаете, что каталог файлов находится в каталоге, который находится на два каталога выше каталога страницы.
Во всех этих примерах предполагается взаимно однозначное сопоставление каталогов в файловой системе и при этом не происходит перезаписи URL-адресов. Также я предполагаю, что вы используете простой http, а не https. Если вы хотите представлять ссылки в том же протоколе, что и страница, это отдельный вопрос.
это первое, что выплюнул гугл...: http://www.web-max.ca/PHP/misc_24.php
эта еще короче: http://nashruddin.com/PHP_Script_for_Converting_Relative_to_Absolute_URL
Если ссылка относительная, вы можете использовать префикс текущего хоста + путь в PHP. Вам придется отформатировать путь, чтобы разрешить относительные части url, например /../
, простой цикл сделает следующее.