Есть браузерный тест.
В нём я беру строку из 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]);; работает.
Прошу прощения за то, что некромант, но вопрос открыт - хотелось бы расставить точки.
Дело в том, что иногда массив $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$
Сборка персонального компьютера от Artline: умный выбор для современных пользователей