У меня есть следующий запрос, любезно предоставленный SO:
SELECT field_website_value FROM field_data_field_website WHERE field_website_value NOT REGEXP('^(https?://|www\\.)[\.A-Za-z0-9\-]+\\.[a-zA-Z]{2,4}(/\S*)?') AND field_website_value!=''
При выполнении этого запроса непосредственно в клиенте MySQL он работает (показывает значения, не соответствующие шаблону).
Однако при добавлении его в Drupal он перестает работать, он просто возвращает непустые строки.
$query = "SELECT field_website_value FROM field_data_field_website WHERE field_website_value NOT REGEXP('^(https?://|www\\.)[\.A-Za-z0-9\-]+\\.[a-zA-Z]{2,4}(/\S*)?') AND field_website_value!=''";
$res = db_query($query)->fetchAll();
echo count($res);
echo "<pre>";print_r($res);die();
Есть ли способ использовать Regexp в Drupal?
Примечание: получение всех строк и применение регулярного выражения в PHP не вариант.
$query = "SELECT * FROM field_data_field_website WHERE field_website_value NOT REGEXP(:regex) AND field_website_value!=''"; $urls = db_query($query,array('regex' => '^(https?://|www\\.)[\.A-Za-z0-9\-]+\\.[a-zA-Z]{2,4}(/\S*)?'))->fetchAll();
27.01.2012