2012-03-17 10 views
6

jestem prośbą kodu źródłowego strony internetowej tak:Bądź względne linki do tych bezwzględnych

<? $txt = file_get_contents('http://stats.pingdom.com/qmwwuwoz2b71/522741'); 
echo $txt; ?> 

Bu chciałbym wymienić względne powiązania z nich bezwzględnych! Zasadniczo

<img src="/images/legend_15s.png"/> and <img src='/images/legend_15s.png'/> 

należy zastąpić

<img src="http://domain.com/images/legend_15s.png"/> 

i

<img src='http://domain.com/images/legend_15s.png'/> 

odpowiednio. Jak mogę to zrobić?

Odpowiedz

7

Kod ten zastępuje tylko linki i obrazy:

<? $txt = file_get_contents('http://stats.pingdom.com/qmwwuwoz2b71/522741'); 
$txt = str_replace(array('href="', 'src="'), array('href="http://stats.pingdom.com/', 'src="http://stats.pingdom.com/'), $txt); 
echo $txt; ?> 

mam przetestowane i swoją pracę :)

UPDATED

Tutaj odbywa się za pomocą wyrażenia regularnego i pracując lepiej:

<? $txt = file_get_contents('http://stats.pingdom.com/qmwwuwoz2b71/522741'); 
$domain = "http://stats.pingdom.com"; 
$txt = preg_replace("/(href|src)\=\"([^(http)])(\/)?/", "$1=\"$domain$2", $txt); 
echo $txt; ?> 

Gotowe : D

9

ten można osiągnąć z następujących czynności:

<?php 
$input = file_get_contents('http://stats.pingdom.com/qmwwuwoz2b71/522741'); 

$domain = 'http://stats.pingdom.com/'; 
$rep['/href="(?!https?:\/\/)(?!data:)(?!#)/'] = 'href="'.$domain; 
$rep['/src="(?!https?:\/\/)(?!data:)(?!#)/'] = 'src="'.$domain; 
$rep['/@import[\n+\s+]"\//'] = '@import "'.$domain; 
$rep['/@import[\n+\s+]"\./'] = '@import "'.$domain; 
$output = preg_replace(
    array_keys($rep), 
    array_values($rep), 
    $input 
); 

echo $output; 
?> 

który linki wyjściowe w następujący sposób:

/coś

staną się

http://stats.pingdom.com//something

I

../something

staną się

http://stats.pingdom.com/../something

Ale to nie będzie zmieniać „data: image/pn sol;" lub zakotwicz etykietki.

Jestem prawie pewien, że można poprawić wyrażenia regularne.

+0

Uwielbiam to! Dziękuje za napisanie tego. Sprytne, aby umieścić parametry preg_replace w kluczach. Zaimplementowałem to, aby spełnić żądanie funkcji użytkownika, aby ustawić bezwzględne linki w mojej wtyczce, które generują statyczne kopie stron internetowych Grav. Powiedział, że jeśli ktoś znajdzie jakiś problem, postaram się tutaj złożyć raport, aby przyszli użytkownicy mieli lepszą kopię. – BarryMode

1

Nie musisz PHP, trzeba tylko użyć tagu bazowy html5 i umieścić swój kod php w organizmie html, wystarczy wykonać następujące czynności Przykład:

<!doctype html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <title>Document</title> 
    <base href="http://yourdomain.com/"> 
</head> 
<body> 
<? $txt = file_get_contents('http://stats.pingdom.com/qmwwuwoz2b71/522741'); 
echo $txt; ?> 
</body> 
</html> 

i wszystkie pliki będą użyj adresu bezwzględnego

Powiązane problemy