как разобрать это: char (x)? - PullRequest
0 голосов
/ 09 мая 2011

Я использую YAML для получения схемы MySQL, и мне нужно проанализировать только такие строки CHAR(60) или VARCHAR(90) и т. Д.

Результат разбора будет выглядеть так:

array('CHAR', 60);
array('VARCHAR', 90);

1 Ответ

3 голосов
/ 09 мая 2011

Следующее регулярное выражение сделает это. Если они не встречаются по одному на строку, вы также должны добавить границы \b после косой черты и перед закрывающей.

$s = "VARCHAR(90)";
$matches = array();
preg_match("/([A-Z]+)\(([0-9]+)\)/", $s, $matches);

// Then use the matched values into your array.
array($matches[1], $matches[2]);

РЕДАКТИРОВАТЬ : В первый раз неправильно заданы ключи массива $matches. Должно быть 1 & 2, а не 0 & 1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...