PHP正则表达式:从页面主体html中提取动态URL

时间:2016-01-19 22:01:37

标签: php regex

我将一个网站html加载到一个字符串中,它在主体中有几个g.load()代码 - 可能大约10个。我需要这个特殊的代码,其标识符为divId:"listing-provided-by-module"

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

1 个答案:

答案 0 :(得分:0)

试试这个(visualized here):

# python
Python 2.7.3 (default, Apr 14 2012, 08:58:41) [GCC] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import re
>>> import regex
>>> s1 = 'wow'
>>> s2 = 'ℛℯα∂α♭ℓℯ ♭ʊ☂ η☺т Ѧ$☾ℐℐ'
>>> print(s2)
ℛℯα∂α♭ℓℯ ♭ʊ☂ η☺т Ѧ$☾ℐℐ
>>> re.search(s1,s1)
<_sre.SRE_Match object at 0x7f0ce27c38b8>
>>> re.search(s2,s2)
>>> type(s2)
<type 'str'>
>>> us2 = unicode(s2,'utf-8')
>>> us2
u'\u211b\u212f\u03b1\u2202\u03b1\u266d\u2113\u212f \u266d\u028a\u2602 \u03b7\u263a\u0442 \u0466$\u263e\u2110\u2110'
>>> re.search(us2,us2,re.UNICODE)
>>> regex.search(s2,s2)
>>> regex.search(us2,us2,regex.UNICODE)
>>>   

您的网址将包含在第一个捕获组中。

因此,PHP代码将是:

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