Как отловить исключение при использовании preg_match? - PullRequest
0 голосов
/ 16 апреля 2019

У меня есть следующий код, который отлично работает, за исключением случаев, когда шаблон не найден и выдается исключение.Как я могу поймать эту ошибку?Пожалуйста, помогите ...

function GetUser($username) {
    $options  = array('http' => array('user_agent' => 'some_obscure_browser'));
    $context  = stream_context_create($options);
    $site = file_get_contents('https://www.example.com/' . $username, false, $context);

    $pattern = '/\"entity_id\":\"(\d+)\"/';

    if (!preg_match($pattern, $site, $matches)) {
        throw new Exception('User not found');
    }
    return $matches[1];
  }

Сообщение об ошибке

Предупреждение: file_get_contents (https://www.example.com/wrong_pattern): не удалось открыть поток: ошибка HTTP-запроса! HTTP / 1.1 404 Not Foundв D: \ XAMPP \ htdocs \ site \ test.php в строке 23

Неустранимая ошибка: необработанное исключение: file_get_contents (https://www.example.com/wrong_pattern): не удалось открыть поток: ошибка HTTP-запроса! HTTP / 1.1 404 НеНайдено в D: \ XAMPP \ htdocs \ site \ test.php: 36 Трассировка стека: # 0 D: \ XAMPP \ htdocs \ site \ test.php (48): GetUser ('неправильный_паттерн') # 1 {main} брошен вD: \ XAMPP \ htdocs \ site \ test.php в строке 36

1 Ответ

0 голосов
/ 16 апреля 2019

положить все в блок try / catch и, если выдается ошибка:

try {
    // your current code here
} catch( Exception $e ) {
    echo $e->getMessage();
    // Or different way of handling that problem - depends on your needs
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...