Помогите с регуляркой для mySQL

voodoo911
На сайте с 11.03.2008
Offline
157
595

Всем здрасте. Помогите с регуляркой.

Задание:

Нужно в Wordpress выбрать все посты где есть ссылки в которых нет определенных слов.

Например

Есть такой пост

Post 1

<a href="http://mail.ru">mail</a><a href="http://google.com">google</a><a href="http://yandex.com">yandex</a>

Нам нужно получить его , учитывя что слово google и yandex в черном списке

Тоесть нужен запрос с логикой - выбрать посты где есть ссылки не содержащие google и yandex.

Пытаюсь сделать как то так

SELECT *

FROM wp_posts

WHERE post_content

REGEXP 'href="[^"]*^google|^yandex[^"]*"'

но как результат - я тут :)

Помогите, люди добрые

TF-Studio
На сайте с 17.08.2010
Offline
334
#1

А много записей?

Если не получается так, почему через пых не обработать (при условии, что записей не много).

Всё ещё лучший способ заработка для белых сайтов: GoGetLinks (https://www.gogetlinks.net/?inv=fahbn8).
voodoo911
На сайте с 11.03.2008
Offline
157
#2

Много. Поэтому надо перегрузить на мускул немного.

SeVlad
На сайте с 03.11.2008
Offline
1609
#3
voodoo911:
Много

Тогда что тебе даст выборка с МуСкуле? Вручную будешь править? Менять-то по регуляркам МуСуль не умеет.

TF-Studio:
почему через пых не обработать (при условии, что записей не много).

+1

А если и много - ну и что? Поставил маинтансе на 10 мин и запускай.Ну или на крон в 2 часа ночи. А ещё лучше (ИМХО) - править дамп.

Ида. Плагинов же ж для поиска-замены - как грязи.

Делаю хорошие сайты хорошим людям. Предпочтение коммерческим направлениям. Связь со мной через http://wp.me/P3YHjQ-3.
siv1987
На сайте с 02.04.2009
Offline
427
#4

В стандартном REGEXP нет поддержки утверждений.

Можно что-то типа WHERE post_content LIKE '%href="%' AND post_content NOT REGEXP 'href="https?://(www\.)?(google\.ru|yandex\.ru)'

либо установить udf расширение preg https://github.com/mysqludf/lib_mysqludf_preg#readme

---------- Добавлено 13.07.2013 в 11:57 ----------

voodoo911:
Много. Поэтому надо перегрузить на мускул немного.

На сколько много, тысячу, десять тысяч?...

voodoo911
На сайте с 11.03.2008
Offline
157
#5
SeVlad:
Тогда что тебе даст выборка с МуСкуле? Вручную будешь править? Менять-то по регуляркам МуСуль не умеет.
+1
А если и много - ну и что? Поставил маинтансе на 10 мин и запускай.Ну или на крон в 2 часа ночи. А ещё лучше (ИМХО) - править дамп.
Ида. Плагинов же ж для поиска-замены - как грязи.

Не нужно офтопить, сли нечего сказать по теме

---------- Добавлено 13.07.2013 в 12:01 ----------

Записей тысяч 5 помоему. Но у клиента говеный хостинг и все летит при простом переборе.

siv1987:
WHERE post_content LIKE '%href="%' AND post_content NOT REGEXP 'href="https?://(www\.)?(google\.ru|yandex\.ru)'

такая была идея, но по идее оно выберет все где есть ссылки но не те где есть ссылки на google и yandex. Но если в посте есть еще ссылки ? То они проигноряться ибо регексп найдет заперщенную ссылку

TF-Studio
На сайте с 17.08.2010
Offline
334
#6

Слили бекап себе, обработали, залили обратно.

siv1987
На сайте с 02.04.2009
Offline
427
#7
voodoo911:
такая была идея, но по идее оно выберет все где есть ссылки но не те где есть ссылки на google и yandex. Но если в посте есть еще ссылки ? То они проигноряться ибо регексп найдет заперщенную ссылку

Тогда нет смысла мучать mysql когда в посте могут быть и другие ссылки. Дергать все и обработать на php.

Ну или установить PCRE функции

voodoo911
На сайте с 11.03.2008
Offline
157
#8

Ну если бы мы изначатьно отфильтровали на уровне mysql часть постов, то пхп было бы меньше работы. Нет ?

siv1987
На сайте с 02.04.2009
Offline
427
#9

За то она явно прибавится на mysql, и неизвестно что хуже. Тем более что на mysql не хватает инструментов для такого поиска.

voodoo911
На сайте с 11.03.2008
Offline
157
#10

ясно. ну и на том спасибо

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий