Я хочу найти первую совпадающую строку в очень длинном тексте. Я знаю, что могу использовать preg_grep () и взять первый элемент возвращаемого массива. Но делать это неэффективно, если мне нужно только первое совпадение (или я знаю, что есть только одно совпадение заранее). Любое предложение?
preg_match () ?
preg_match () возвращает количество совпадений шаблонов. Это будет либо 0 раз (без соответствия), либо 1 раз, потому что preg_match () прекратит поиск после первого совпадения. preg_match_all () наоборот будет продолжаться до тех пор, пока он не достигнет конца предмета. preg_match () возвращает FALSE, если произошла ошибка.
Вот пример того, как вы можете это сделать:
$string = 'A01B1/00asdqwe'; $pattern = '~^[AZ][0-9][0-9][AZ][0-9]+~'; if (preg_match($pattern, $string, $match) ) { echo "We have matched: $match[0]\n"; } else { echo "Not matched\n"; }
Вы можете попробовать print_r($match)
чтобы проверить структуру массива и протестировать ваше регулярное выражение.
Боковое примечание к регулярному выражению: