- preg_match_all: documentation ( source)
<?php
$definition = '*@table bee\n@table aa';
preg_match_all('/\s*@table\s+([a-z]+)(?:\(\s*([^)\s]+)\s*\))?/i', $definition, $matched);
switch(true) {
case empty($matched[0]):
throw new Exception("Table name not defined");
case (count($matched[0]) > 1):
throw new Exception("Only one table name can be defined");
default:
return [$matched[1][0], $matched[2][0]];
}