Laravel - Dusk - preg_match_all() - Undefined offset: 0 без видимых причин

181
28 июля 2021, 04:20

Есть браузерный тест.

В нём я беру строку из HTML-элемента и паршу её:

preg_match_all('=\d+$=', $subject, $matches);

Пример строки:

Please use this verification code to complete your sign in: 123456

Потом хочу взять весь шаблон: $matches[0][0]; но выдаёт следующее:

ErrorException: Undefined offset: 0

Пробую положить в лог: Log::info($matches);

В логе:

array (
  0 => 
  array (
    0 => '123456',
  ),
)

Есть идеи?

P. S. Так: array_shift($matches[0]);; работает.

Answer 1

Прошу прощения за то, что некромант, но вопрос открыт - хотелось бы расставить точки.

Дело в том, что иногда массив $matches бывает пуст, поэтому перед вызовом элементов массива необходимо делать проверку:

 $subjects = [
     'эта строка будет иметь совпадения: 123456',
     'а эта даст ошибку!'
 ];
foreach ($subjects as $subject) {
    preg_match_all('=\d+$=', $subject, $matches);
    if (!empty($matches[0]) && !empty($matches[0][0])) {
        var_dump($matches[0][0]);
    } else {
        echo'no matches' . PHP_EOL;
    }
}

вывод:

vagrant@homestead:~/projects/examples$ php aaa.php
/home/vagrant/projects/examples/aaa.php:39:
string(6) "123456"
no matches
vagrant@homestead:~/projects/examples$
READ ALSO
Каким лучше образом пропарсить сайт без API?

Каким лучше образом пропарсить сайт без API?

У меня есть сайт с торговой площадкой, мне нужно его пропарсить средствами php (есть ли какие то библиотеки)

175
Как из select сделать radio?

Как из select сделать radio?

Есть форма с select которую надо перевести в radio buttonПри выборе одного из значений появляется поле для заполнения данными для этого поля

352
Много однотипных Entity Doctrine

Много однотипных Entity Doctrine

Есть много одинаковых табличек, по типу table_2019, table_2018, поля в них идентичныМожно ли как то настроить доктрину для работы с такими табличками,...

370