質問が述べているように; PHP ページ内のすべての URL が相対 URL である場合、それを検出する方法はありますか。もちろん、PHP ページに含まれる URL がさまざまな動作で表示される可能性があることを考慮すると、次のようになります。
<link rel="stylesheet" href="/lib/css/hanv2/ie.css" />
<img src="/image.jpg">
<div style="background-image: url(/lib/data/emotion-header-v2/int-algemeen08.jpg)"></div>
だから私は相対URLを取得する必要がcss link
ありますjs link
.image link
swf link
私はこれにAgilityPackを使用しています。リンクを検出し、それらが相対的かどうかを確認するために使用した C# コード スニペストを次に示します。
// to extract all a href tags
private List<string> ExtractAllAHrefTags(HtmlAgilityPack.HtmlDocument htmlSnippet)
{
List<string> hrefTags = new List<string>();
foreach (HtmlNode link in htmlSnippet.DocumentNode.SelectNodes("//link[@href]"))
{
HtmlAttribute att = link.Attributes["href"];
hrefTags.Add(att.Value);
}
return hrefTags;
}
// to extract all img src tags
private List<string> ExtractAllImgTags(HtmlAgilityPack.HtmlDocument htmlSnippet)
{
List<string> hrefTags = new List<string>();
foreach (HtmlNode link in htmlSnippet.DocumentNode.SelectNodes("//img[@src]"))
{
HtmlAttribute att = link.Attributes["src"];
hrefTags.Add(att.Value);
}
return hrefTags;
}
//to check whether path is relative
foreach (string s in AllHrefTags)
{
if (!s.StartsWith("http://") || !s.StartsWith("https://"))
{
// path is not relative
}
}
AgilityPackなどを使用して、特定のHTMLページからすべての相対パスを簡単に取得するための良い方法またはより正確な方法があるかどうか疑問に思っています