@karasique

Как спарсить значение, используя php?

В теле страницы есть такая часть https://pastebin.com/asdsLNgp
Мне нужно достать значение (цифру в count) в параметре *_followed_by
"edge_followed_by": {
    "count": 3296
},
"followed_by_viewer": false,
"edge_follow": {
    "count": 0
}
  • Вопрос задан
  • 343 просмотра
Решения вопроса 1
lidacriss
@lidacriss
wtf
как вариант - можно втупую регуляркой
preg_match('#"edge_followed_by":[^"]*?"count":\s*(\d+)#isu', $script, $match);
var_dump($match);


или вытащить из скрипта json и распарсить его:
if (preg_match('#window._sharedData[=\s]+(?P<json>\{.*});<\/script>#isu', $script, $match)) {
    if ($json = json_decode($match['json'], true)) {
        // в вашем случае такой "длинный" путь
		var_dump($json['entry_data']['ProfilePage']['0']['graphql']['user']['edge_followed_by']['count']);
    } else {
        echo 'не удалось распарсить JSON';
    }
} else {
    echo 'не удалось вытащить JSON';
}


UPD исходя из ваших ответов выше
$page = file_get_contents('https://www.instagram.com/instagram/');
// вариант 1
preg_match('#"edge_followed_by":[^"]*?"count":\s*(\d+)#isu', $page, $match);
var_dump($match);
// вариант 2
if (preg_match('#window._sharedData[=\s]+(?P<json>\{.*});<\/script>#isu', $page, $match)) {
    if ($json = json_decode($match['json'], true)) {
        var_dump($json['entry_data']['ProfilePage']['0']['graphql']['user']['edge_followed_by']['count']);
    } else {
        echo 'не удалось распарсить JSON';
    }
} else {
    echo 'не удалось вытащить JSON';
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Bandicoot
@Bandicoot
Вась-программист
$json = '{
"edge_followed_by": {
    "count": 3296
},
"followed_by_viewer": false,
"edge_follow": {
    "count": 0
}
}';
$params = json_decode($json, true);
echo $params["edge_followed_by"]["count"];
Ответ написан
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
preg_match()
и регулярка типа @\".*_followed_by\":\s+{\s+\".*":\s([\d]{4})\s+}@
https://regex101.com/r/8yw0hp/2
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы