HTML değiştirmek Normal ifadeler kullanma

3 Cevap php

Nasıl giriş html alarak ve herhangi src ya da yerel bir adrese tam yere (örneğin href = "index.html" (belirtilen) örneğin href = "http://www.somesite.com gitmek href bağlantıları değiştirerek hakkında gitmek istiyorum / index.html "), bu başka bir siteden bir dosya alır ve) tür bir vekil gibi (görüntüler bir site için

3 Cevap

Mutlaka sıkı değil rasgele HTML sayfaları için bu yapıyorsanız sizin gibi standart olmayan özelliklerini ele almak gerekecek, çünkü regexp'nin, sizin için büyük bir baş ağrısı olacaktır:

href="some_url"
href='some_url'
href=some_url

Benim tavsiyem bu görev için DOM fonksiyonlarını kullanmaktır. Siz bu satırları (denenmemiş) arasında bir şey yapabilirsiniz:

$doc = new DOMDocument();
@$doc->loadHTMLFile($url); // suppress warnings about html errors
$xpath = new DOMXpath($doc);
$hrefs = $xpath->query("//*[@href]/@href"); // select the href attribute of all elements that have a href attribute
for ($i=0; $i < $hrefs->length; $i++) {
    $href = $hrefs->item($i);
    $href->nodeValue = make_new_url($href->nodeValue); // this is where the magic happens
}
// now do the same for src attributes

Yine, bu kod bu konuda çok emin değilim bazı verdiği, özellikle XPath sorgusu gerekebilir.

DOM uzantısını kullanarak eldeki görev için aşırı karmaşık görünebilir, ama çok, bu görev ve gelecek olanlar, baş ağrısı ve çok zaman kaçınmayacağız.

**You dont need any regular expression for this problem, ** $_SERVER['HTTP_HOST']

$cur_dir = basename(dirname($_SERVER['PHP_SELF']));
$host = $_SERVER['HTTP_HOST'];
echo $host."/".$cur_dir."/"$filename;

Bu baskı http://www.yourdomain.blabla/your/images/index.html olacak