У меня есть файл базы данных SQLITE, который в одном из столбцов таблицы содержит несколько простых регулярных выражений.
Эти выражения – это что-то вроде / foo (. ?) Или / foo / bar / (.?) И так далее …
Ну, когда мы пытаемся сопоставить некоторый текст с обычным шаблоном, в PHP мы делаем:
preg_match ($ pattern, $ target, $ matches)
Очевидно, что замена переменных на содержимое.
То, что я хотел бы сделать, это отправить ANY STRING как значение предложения WHERE и, при поиске файла базы данных SQLITE, использовать каждый из сохраненных регулярных выражений для соответствия шаблону в данной строке.
Я думаю, что с помощью PHP sqlite_create_function () я могу создать какую-то рутину для этого, но я точно не знаю, как это происходит, поскольку я впервые использую SQLITE.
Если вы заинтересованы, это часть MVC Routing Framework, которую я разрабатываю.
Заранее большое спасибо.
Здесь вы можете использовать документацию SQLiteDatabase::createFunction
или документацию PDO::sqliteCreateFunction
здесь
Я сделал что-то вроде этого:
<?php function _sqliteRegexp($string, $pattern) { if(preg_match('/^'.$pattern.'$/i', $string)) { return true; } return false; } $PDO->sqliteCreateFunction('regexp', '_sqliteRegexp', 2); ?>
Использование:
SELECT route FROM routes WHERE pattern REGEXP 'your/url/string' LIMIT 1
Это то, что вы ищите?
eg SELECT * FROM `my_table` WHERE `my_column` REGEXP "\/foo(.?)"