Очистите ПОЛНОЕ изображение Src с PHP - PullRequest
2 голосов
/ 22 июля 2009

Я пытаюсь очистить img src с помощью php, я могу получить src нормально, но если src не включает полный путь, тогда я не могу использовать его повторно. Есть ли способ получить полный путь к изображению с помощью php (браузеры могут получить его, если использовать меню правой кнопки мыши).

т. Как получить полный путь, включая домен, в одном из следующих двух примеров?

src="../foo/logo.png"
src="/images/logo.png"

Спасибо

Allan

Ответы [ 2 ]

3 голосов
/ 22 июля 2009

Вам не нужно регулярное выражение ... просто немного терпения. На самом деле я не хочу писать код для вас, но просто проверьте, начинается ли src с http://, а если нет, то у вас есть 3 разных случая.

  1. Если оно начинается с /, тогда предваряйте http://domain.com
  2. Если он начинается с .., вам придется разбить полный URL-адрес и взламывать части , пока src не начнет с /
  3. В противном случае (начинается с буквы), полный домен берется, а сокращает его до последней косой черты , а затем добавляет URL-адрес src.

Или .... будь ленивым и укради этот сценарий

$url = "http://www.goat.com/money/dave.html";
$rel = "../images/cheese.jpg";

$com = InternetCombineURL($url,$rel);

//  Returns http://www.goat.com/images/cheese.jpg

function InternetCombineUrl($absolute, $relative) {
    $p = parse_url($relative);
    if($p["scheme"])return $relative;

    extract(parse_url($absolute));

    $path = dirname($path); 

    if($relative{0} == '/') {
        $cparts = array_filter(explode("/", $relative));
    }
    else {
        $aparts = array_filter(explode("/", $path));
        $rparts = array_filter(explode("/", $relative));
        $cparts = array_merge($aparts, $rparts);
        foreach($cparts as $i => $part) {
            if($part == '.') {
                $cparts[$i] = null;
            }
            if($part == '..') {
                $cparts[$i - 1] = null;
                $cparts[$i] = null;
            }
        }
        $cparts = array_filter($cparts);
    }
    $path = implode("/", $cparts);
    $url = "";
    if($scheme) {
        $url = "$scheme://";
    }
    if($user) {
        $url .= "$user";
        if($pass) {
            $url .= ":$pass";
        }
        $url .= "@";
    }
    if($host) {
        $url .= "$host/";
    }
    $url .= $path;
    return $url;
}

С http://www.web -max.ca / PHP / misc_24.php

2 голосов
/ 22 июля 2009

Если у вас нет URL сайта, с которого вы начинаете (в этом случае вы можете добавить его к значению атрибута src), кажется, что все, что у вас осталось, это строка.

Я предполагаю, что у вас нет доступа к какой-либо дополнительной информации, конечно. Если вы анализируете HTML, я предполагаю, что вы должны иметь доступ к абсолютному URL-адресу хотя бы для HTML-страницы, но, возможно, нет.

...