-1

我正在尝试从 URL 中提取 ID(下面的“123456789”编号)。

例如这不起作用: https ://www.facebook.com/pages/page-name%C3%A5rd/123456789

请注意 URL 中的“%C3%A5”。

但这有效: https ://www.facebook.com/pages/page-name/123456789

这是我正在使用的 PHP:

    if (strpos($url,'pages') == true) {

    $page_id = preg_replace("/[^0-9]/","",$url);

    }
4

1 回答 1

1
$array = array();
if (preg_match('#pages/[^/]+/(\d+)#',$url,$array)){
    $page_id = $array[1];
}

说明:我不确切知道 Facebook 网址是如何工作的,但我假设您正在查看网址的子集 - 从页面开始 - 而且数字部分实际上由 / 字符分隔。在我看来,这比寻找 3 个以上的数字更好,这是对在 url 中查找 url 编码字符的任意“反应”。

我认为您不能假设在它们之后不会有任何东西,url 参数在社交媒体网站中似乎很常见。

另一件事是,根据我的经验,# 在更广泛的现实生活 url 中作为正则表达式“包装字符”起作用,所以我建议默认使用它,而不是大多数示例中使用的 /。此外,当我开始使用正则表达式时,我经常会尝试用 . ? - 任何字符,0 次或多次,非贪婪。我发现使用“不是那个字符模式”,在这种情况下 [^/]+ (不是斜线)更可靠地工作。您可以使用它来很好地匹配 html 标签:] > 或 html 标签的属性:] "[^"] "[^>]*>

于 2013-10-23T01:31:53.837 回答