@ruslite

Как найти нужный элемент в string?

Получил содержимое нужной страницы:
$context = stream_context_create(array("http"=>array(
            "method" => "GET",
           "header" => "Accept: text/*, */*\r\n",
           "ignore_errors" => true,
        )));

       $page = file_get_contents("https://instagram.com/accounts/login/", false, $context);


Как понимаю это все строка. Не могу сообразить как найти Инпут и получить его значение. Пытался так:
$content = preg_match('<input type="hidden" name="csrfmiddlewaretoken" value="(.*?)">', $page, $found);

Значение выдает пустое.

Как получить значение моего Инпута?
  • Вопрос задан
  • 161 просмотр
Решения вопроса 2
idelg
@idelg
Разработчик
Лучше не парсить HTML регулярками.

Гораздо удобнее получить нужный инпут с помощью CSS-селектора. Возьми соответствующую библиотеку от TJ или Symfony.
Ответ написан
Комментировать
orlov0562
@orlov0562 Куратор тега PHP
I'm cool!
Тебе надо подробнее почитать про регулярный выражения, например Дж. Фридла.

В твоем случае будет что-то типа:
if (preg_match('~<input[^>]+name="csrfmiddlewaretoken"[^>]+value="([^"]+)"~Ui', $page, $matches)) {
    print_r($matches);
} else {
    throw new Exception('Pattern not found');
}

А вообще для парсинга страницы, лучше использовать что-то типа DiDom
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
preg_math() возвращает 1 или 0 , он не возвращает , то что нашел... Но название переменной "$content" почему то подсказывает мне, что именно его вы и проверяете.
Проверьте переменную $found
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы