У меня есть URL-адреса Facebook ниже (все видео из facebook), и я хочу получить его идентификатор.

  1. https://mbasic.facebook.com/TrendingInPhilippinesOfficial/videos/1722369168023859/
  2. https://mbasic.facebook.com/story.php?story_fbid=1722369168023859&id=1388211471439632

Вывод должен быть:

1. 1388211471439632
2. 1388211471439632

Я использовал это регулярное выражение для получения идентификатора.

preg_match("~/videos/(?:t\.\d+/)?(\d+)~i", $_GET['url'], $matches);
echo $matches[1];

Хорошо, это работает на #1, но на #2 это не работает.

Любое решение в этом вопросе?

1
Jacob 1 Май 2016 в 06:22

2 ответа

Лучший ответ

Я предполагаю, что вам нужно одно регулярное выражение для обеих ссылок?

$link1 = "https://mbasic.facebook.com/TrendingInPhilippinesOfficial/videos/1722369168023859/";
$link2 = "https://mbasic.facebook.com/story.php?story_fbid=1722369168023859&id=1388211471439632";
$regex = '/(videos|story_fbid)(\/|=)(\d+)(\/|&)?/';

preg_match($regex, $link1, $matches);
preg_match($regex, $link2, $matches2);

Обратите внимание на ? в конце регулярного выражения, которое позволит анализировать его без завершающего / или &. Если вы хотите анализировать идентификатор только тогда, когда есть оба, удалите вопросительный знак из регулярного выражения.

Var_dump $matches будет:

array(5) {
    [0]=>
        string(24) "videos/1722369168023859/"
    [1]=>
        string(6) "videos"
    [2]=>
        string(1) "/"
    [3]=>
        string(16) "1722369168023859"
    [4]=>
        string(1) "/"
}

И var_dump $matches2 будет:

array(5) {
    [0]=>
        string(28) "story_fbid=1722369168023859&"
    [1]=>
        string(10) "story_fbid"
    [2]=>
        string(1) "="
    [3]=>
        string(16) "1722369168023859"
    [4]=>
        string(1) "&"
}
1
Chin Leung 1 Май 2016 в 03:38

Чтобы получить параметры из URL, вы можете использовать функции parse_url и parse_str.

parse_str(parse_url($link2)['query'], $array);
print_r($array);

Выход

Array
(
    [story_fbid] => 1722369168023859
    [id] => 1388211471439632
)
0
Saurabh Dhar 11 Авг 2019 в 19:23