Для любого, кто найдет это, я так и сделал. Это было в Access 2003, оно может отличаться в других версиях.
Сначала я пошел на Tools > Analyze > Documenter
, выбрал нужную таблицу и использовал следующие настройки:
Затем мне подарили то, что выглядело как pdf или слово doc (я не думаю, что это так, но это на самом деле не имеет значения).
Затем я сделал File > Export
, выбрал «Текстовые файлы .txt» и сохранил его в папке на моем компьютере.
Затем я открыл файл .txt на PHP (везде, где вы можете делать регулярные выражения, должно быть все в порядке).
В моем случае не каждое поле имело правила проверки, и правила проверки не появлялись, если они не были установлены, что означало, что регулярное выражение для извлечения fieldID имело больше результатов, чем для извлечения правил проверки.
Итак, я использовал два регулярных выражения.
/SourceField:\s+(\S+).*?AllowZeroLength/msi
Это получает все между SourceField и AllowZeroLength. AllowZeroLength - это первый бит повторяющегося текста после правил проверки.
Затем я использовал это регулярное выражение для получения правил проверки из этой строки.
/ValidationRule:\s+(.*)\\r/
Мне пришлось использовать \r
вместо новой строки, вероятно, что-то связанное с переносом из Windows в Ubuntu.
В PHP это выглядело так:
<?php
$file_contents = file_get_contents('validations.txt');
$response = [];
preg_match_all('/SourceField:\s+(\S+).*?AllowZeroLength/msi', $file_contents, $matches);
for($i = 0; $i < count($matches[0]); $i++) {
$id = $matches[1][$i];
preg_match('/ValidationRule:\s+(.*)\\r/', $matches[0][$i], $validation_match);
$response[$id] = $validation_match[1] ?? null;
}
Почти наверняка есть более чистое регулярное выражение, чем это, но это было невероятно быстро, и я получил именно то, что хотел.