簡體   English   中英

使用正則表達式更改HTML

[英]Using regular expressions to change HTML

我將如何獲取輸入html並將更改到本地地址的任何src或href鏈接(例如href =“ index.html”)更改為其完整位置(指定),例如href =“ http://www.somesite.com /index.html“),這是用於從另一個站點獲取文件並顯示該文件的站點(有點像代理)

看一下<base>標簽。 它使您可以定義所有鏈接的相對位置。

如果您對不一定嚴格的隨機HTML頁面執行此操作,則正則表達式將使您頭疼不已,因為您必須處理以下非標准屬性:

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

我的建議是將DOM函數用於此任務。 您可以在以下幾行中進行一些操作(未經測試):

$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

同樣,此代碼可能需要一些調整,尤其是XPath查詢,對此不太確定。

對於即將完成的任務,使用DOM擴展可能看起來過於復雜,但是在此任務以及將來的任務上,這將為您節省很多頭痛和時間。

**您不需要任何正則表達式來解決此問題,** $_SERVER['HTTP_HOST']

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

這將打印http://www.yourdomain.blabla/your/images/index.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM