powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / REGEXP замена в таблице wordpress
2 сообщений из 2, страница 1 из 1
REGEXP замена в таблице wordpress
    #39368508
mjourist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Друзья, помогите разобраться.
При включении кеша на wordpress, адрес типа mydomain.com/?p=123 превратился в mydomain.com/Hello-World
Но вот ведь не задача, есть такие ссылки как:

mydomain.com/Hello.-World
mydomain.com/Hello-&-World

при их вводе, сайт выдаёт ошибку.
если удалить все лишние символы типа "." или "&", то всё ок и странички загружаются без проблем

для удаления я искользовал следующий такой запрос:
UPDATE `wp_posts` SET `post_name` = REPLACE( post_name, '.', '' );
UPDATE `wp_posts` SET `post_name` = REPLACE( post_name, '&', '' );

И вот вопрос: как построить запрос так, чтобы удалились все символы, кроме букв,цифр и тире (одним запросом сразу) ?
Чтоб не строить 50 запросов на удаление.
Спасибо.
...
Рейтинг: 0 / 0
REGEXP замена в таблице wordpress
    #39368635
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Используй ХП.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
drop table if exists test;

create table test (fld varchar(32));
insert into test (fld)
select 'one space' union all
select 'two  spases --' union all
select 'space _underline' union all
select 'one_underline' union all
select ' l-space' union all
select 'r-underline_' union all
select 'none' ;

drop procedure if exists multiremove;

delimiter @@

create procedure multiremove(charstodelete text) 
begin
while length(charstodelete)>0 do
	begin
	set @onechar = substring(charstodelete,1,1);
	set charstodelete = substring(charstodelete,2,length(charstodelete));
	set @sql=CONCAT("update test set fld=replace(fld,\'",@onechar,"\',\'\');");
--	select @sql;
	prepare stmt from @sql;
	execute stmt;
	deallocate prepare stmt;
	set @sql='';
	set @onechar='';
	end;
end while;
end;@@

delimiter ;

select concat("\'",fld,"\'") from test;
call multiremove(' _');
select concat("\'",fld,"\'") from test;

drop procedure multiremove;
drop table test;

...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / REGEXP замена в таблице wordpress
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]