我希望我的 PHP 程序从 html 文件中提取所有 URL。当我编写一个 C# 程序来提取 html 文件中的所有 URL 时,我使用了以下正则表达式。然后将“http”部分添加到开头以获得完整的 URL 列表。你能告诉我如何使用我在以下代码中使用的正则表达式来处理 PHP 吗?
List<string> links = new List<string>();
Regex regEx;
Match matches;
regEx = new Regex("href=\"http\\s*(?:\"(?<1>[^\"]*)\"|(?<1>\\S+))\"", RegexOptions.IgnoreCase | RegexOptions.Compiled);
for (matches = regEx.Match(downloadString); matches.Success; matches = matches.NextMatch())
{
links.Add("http" + matches.Groups[1].ToString());
} //Add all the URLs to a list and return the list
return links;
如果您能举个例子给我看,我将不胜感激:
@julian 非常感谢您的详细解释。我稍微修改了代码并按以下方式使用它:
$html = file_get_contents('http://mysmallwebpage.com/');
$dom = new DOMDocument;
$dom->loadHTML($html);
$links = $dom->getElementsByTagName('a');
foreach ($links as $link)
{
$returnLink = $link->getAttribute('href');
echo "<br />",$returnLink;
}
但结果没有显示确切的 URL 地址。它输出如下内容:
/nmsd-gallery/
/home/?currentPage=3
javascript:noop();
你能告诉我是否有办法只获取 URL 地址吗?如:
http://mysmallwebpage.com/