2016-01-19 29 views
-1

我將一個網站html加載到一個字符串中,它有幾個g.load()代碼 - 可能在10左右。我需要這個具有divId:"listing-provided-by-module"標識符的特定代碼。PHP正則表達式:從頁面正文中提取動態網址html

g.load({ajaxURL:"/AjaxRender.htm?encparams=4~502222143586867513~LVuCHKHFeed3jCcefsa9MDj3xIs5wDqP7UwvtV3XDO0HnrynNRzT338AKMnzqNa4bTpgvQbff_Phk5wkav9LlWUqZfiIFKl3zXnXawc1_XDPR_9F83BlTaqhCqbfubm40s0ZciFJZV2dHzDDwlDVJJzitcXFgThESVdjnWUjJkj_MuZSVclGh7ddZ0neIHCH&rwebid=46328989&rhost=1",jsModule:"z-complaint-manager-async-block",phaseType:"scroll",divId:"listing-provided-by-module"}); 

我需要的到底是ajaxURL,並在同一時間它會檢查它的確是與divId:"listing-provided-by-module"所以它得到正確的URL。希望你能幫助正則表達式和PHP。謝謝!

我已經試過:

/g\.load\(\{ajaxURL:"(.*)".*divId:"listing-provided-by-module"/ 

但是比賽太寬。

這裏是整個HTML的身體我要匹配:http://pastebin.com/seJd2jjc

+0

這是整個HTML從上面提取的網址:http://pastebin.com/seJd2jjc – Knide

回答

0

試試這個(visualized here):

'/g\.load\(\{ajaxURL:"([^"]*)",[^})]*,divId:"listing-provided-by-module"/s' 

您的網址將包含第一個捕獲小組。

因此,PHP代碼如下:

<?php 

$matches = []; 
if (preg_match('/g\.load\(\{ajaxURL:"([^"]*)",[^})]*,divId:"listing-provided-by-module"/s', $string, $matches)) 
{ 
    $url = $matches[1]; 
} 
else 
{ 
    // No match found. 
} 
+1

你好,這是確切的HTML - HTTP:/ /pastebin.com/seJd2jjc嘗試了您的代碼,但我無法使用列表提供的模塊提供g.load {} – Knide

+0

感謝您提供。修復並更新了鏈接,使其在Regex101鏈接上與完整的HTML相匹配。 – Will