使用PHP中的正则表达式从URL中提取参数

时间:2010-09-29 17:29:10

标签: php regex url

我有许多链接,如下所示:

<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)

对此有什么好的正则表达式?感谢。

1 个答案:

答案 0 :(得分:8)

不要尝试使用正则表达式解析HTML;使用像PHP’s DOM libraryPHP 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'];
}