我有许多链接,如下所示:
<a href="http://url.com/?foo=bar&p=20" title="foo">Foo</a>
<a href="http://url2.com/?foo=bar&p=30" title="foo">Foo</a>
我正在尝试从找到的每个p
中提取参数href
。所以在这种情况下,我的结果数组为array (20, 30)
。
对此有什么好的正则表达式?感谢。
答案 0 :(得分:8)
不要尝试使用正则表达式解析HTML;使用像PHP’s DOM library或PHP Simple HTML DOM Parser这样的HTML解析器。然后使用parse_url
解析网址,使用parse_str
解析查询字符串。
以下是一个例子:
$html = str_get_html('…');
$p = array();
foreach ($html->find('a[href]') as $a) {
parse_str(parse_url($a->getAttribute('href'), PHP_URL_QUERY), $args);
if (isset($args['p'])) $p[] = $args['p'];
}