2016-01-19 3 views
-1

Я загрузил веб-сайт html на строку и имеет несколько g.load() код в теле - возможно, около 10. Мне нужен этот конкретный, у которого есть идентификатор divId:"listing-provided-by-module".PHP Regex: извлечение динамического url из страницы body 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 для извлечения URL из выше: http://pastebin.com/seJd2jjc – Knide

ответ

0

Попробуйте это (visualized here):

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

Ваш URL будет содержаться в первой группе захвата.

Таким образом, код 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

Спасибо за предоставление этого. Исправлена ​​и обновлена ​​ссылка, чтобы визуализировать ее, соответствующую вашему полному HTML, по ссылке Regex101. – Will

Смежные вопросы