2012-02-20 2 views
1

Если db_table с множеством адресовприменение preg_match на MySQL

1,www.something.any/djjjj 
2,www.anything.any/nsmms 
3,www.google.com 

и т.д.

и я хочу фильтровать некоторый определенный URL точного префикса, который something.any с помощью я получил ответ сказать, что это

if (preg_match('/something.com/i', $url) > 0) { 
    // Your error message here 
} 

вопрос

Как применить ту же идею о preg_match удалить все это из db_table

$sql= "delete from urls where preg_match('/something.com/i', $url) > 0"; 
mysql_query($sql) or die("query failed: $sql".mysql_error()); 

это дает действительно ошибка, но это точная идея я хочу, чтобы применить так любую идею!

как я собираюсь подключиться к db, тогда вызовите все URL-адреса в моей таблице, затем примените его, чтобы удалить все URL-адреса, добавленные с помощью этого точного префикса something.com, и это все.

ответ

2

Подумайте об этом ... http://dev.mysql.com/doc/refman/5.1/en/regexp.html.

Существует более простой метод «LIKE Statement», читаемый здесь http://www.tutorialspoint.com/mysql/mysql-like-clause.htm. Второй полезен в более простых случаях, когда вы хотите выбрать «все строки, начинающиеся с *». Но он делает точный матч Если у вас есть другие вопросы, пожалуйста, спросите :)

1

Eh ... Вы знаете о% modidfier в строках в MySQL - например.

delete from urls where url like '%something.com%' 

это НЕ регулярное выражение, но это тоже будет работать и гораздо быстрее

-1

Я не знаю ни одного Regex для MySQL (но я не говорю, что это не так, я просто не осознавая их). Но за то, что вы описываете, вы могли бы попробовать:

delete from table where field like '%something.com%' 
+0

Вы не знаете об REGEX для MySQL? Вы прочитали сообщение @ Djumaka, прежде чем ответить? – quickshiftin

+0

Мы писали ответы одновременно. Тем не менее, это не имеет никакого отношения к тому, что решение, которое я предоставил, совершенно справедливо. –

+0

Просто говорю, что я бы скорее бросил быстрый Google для чего-то, а не сказал: «Я не знаю ...», похоже, что мой голос «заблокирован сейчас» (из-за SO), извините, брата. – quickshiftin

1

Есть несколько инструментов в MySQL, которые похожи, 2 из которых были упомянуты уже

  • LIKE запросов
  • POSIX регулярных выражений

Если вы хотите что-то более мощное, вы можете install the PREG plugin for MySQL.

Я бы порекомендовал сначала решить один из первых решений, хотя, поскольку плагин PREG может быть немного хлопот, чтобы бежать и, вероятно, не будет в вашей производственной среде, если вы не находитесь в плотно с DBA :)

Смежные вопросы