2017-09-11 48 views
0

我一直在嘗試使用正則表達式提取具體URL的鏈接,但失敗我試圖使用下面的正則表達式來提取使用PHP的鏈接。正則表達式如何從HTML提取具體路徑的鏈接

preg_match_all('/\\<a href="(.*?)\\">/', $data1, $matches); 

和HTML是這裏只是一個片段

<a href="https://www.website.com/n/?confirm.php" ></a> 

整個HTML包含了很多我需要這個鏈接的鏈接。

+0

看看這個:除了XHTML自足標籤的正則表達式匹配開放標籤(https://stackoverflow.com/questions/1732348/regex-match-open-標籤-excel-xhtml-self-contained-tags/1732454#1732454)和這個:[DOMDocument類](http://php.net/manual/de/class.domdocument.php) – insertusernamehere

+0

提取所有網址(首選方法是DOM),然後嘗試'preg_grep'來輸出包含*特定部分*的文件。 – revo

+0

@revo根據你的方式任何答案? –

回答

0

這將工作,如果我不誤解你的問題。

$html = '<a href="https://www.website.com/n/?confirm.php" ></a>'; 
preg_match_all('/href="([^\s"]+)/', $html, $match); 
print '<pre>'; 
print_r($match); 
print '</pre>'; 
print $match[1][0]; 

編輯:根據評論,你沒有提供給我們的特定URL,這就是爲什麼我剛發佈通用的答案捕捉href。現在看我下面的答案。二手正則表達式將在這裏找到https://regex101.com/r/pnfz7E/1

$re = '/<a href="([^"]*?\/n\/\?confirm\.php)">.*?<\/a>/m'; 
$str = '<a href="https://www.website.com/n/?noconfirm.php">SSD</a> 
<div>How are you</div> 
<a href="https://www.website.com/n/?confirm.php">HDD</a> 
<h2>Being Sunny</h2> 
<a href="https://www.ltmgtfu.com/n/?noconfirm.php">MSD</a> 
<div>How are you</div> 
<a href="https://www.website.com/n/?confirm.php"></a> 
<h2>Being Sunny</h2> 
<a href="https://www.google.com/n/?noconfirm.php">GSD</a> 
<div>How are you</div> 
<a href="https://www.website.com/n/?confirm.php">LSD</a> 
<h2>Being Sunny</h2>'; 

preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0); 

// Print the entire match result 
print '<pre>'; 
print_r($matches); 
print '</pre>'; 
+0

它會打印所有錨點標記,我將其中一個/n/?confirm.php 設置爲更具體。 –

+0

@OwaisIqbal看看我編輯的答案。我希望它能爲你工作。 –