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

0 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>
Run Code Online (Sandbox Code Playgroud)

我正在尝试p从每个href找到的参数中提取参数.所以在这种情况下,我有一个最终结果数组array (20, 30).

什么是一个很好的正则表达式?谢谢.

Gum*_*mbo 8

不要尝试使用正则表达式解析HTML; 使用HTML解析器,如PHP的DOM库PHP Simple HTML DOM Parser.然后使用parse_url和解析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'];
}
Run Code Online (Sandbox Code Playgroud)