Substituir texto por espaços no MySQL

1

Estou tentando fazer uma substituição global de pesquisa em meu banco de dados, que tem muitos artigos com um retorno de carro duplo devido a esse código:

<p> </p>

Eu gostaria de substituir isso no meu blog WordPress, então, ao invés disso, aparece ... nada, e então eu posso deletar o CR. Eu tentei isso no meu banco de dados

UPDATE wp_posts set post_content = replace (post_content,'<p> </p>','');

mas não funcionou. Por quê? Preciso adicionar pensações especiais para considerar o espaço entre o <p> e o </p> ?

Mmm. Bons pontos, tanto Jon Angliss quanto Wim. Jon, como você poderia imaginar, o banco de dados não mostra entradas com essa cadeia de texto. Então, há algo acontecendo dentro do campo post_content.

Wim, o famoso foi substituído anteriormente, mas ainda há centenas de postagens que, por algum motivo, têm algo diferente entre as tags p e / p.

Eu fiz uma pesquisa em uma das postagens com este erro:

mysql> select *  from wp_posts where post_title like '%3DVisionLive%';

E olhando no campo wp_content, este é um pequeno pedaço da postagem:

Phil Eisler, responsable de la divisi?n 3D Vision.?</p>
<p>?</p>
<p>Este portal ser? por tanto

Nenhum til espanhol (acento) mostrado no terminal e, em vez de um espaço, há uma aspa entre as tags pe as tags / p. Eu tentei substituir <p>?</p> , mas novamente, sem resultados. Há algum personagem (ou vários) lá, mas não sei como descobrir isso. Talvez seja o conjunto de caracteres do meu terminal, mas eu acessei o banco de dados do phpmyadmin e, nesse caso, há um caractere de espaço entre o p e o / p. Estranho.

Bem, há mais informações sobre isso Depois de tentar várias coisas, eu fiz isso substituir:

UPDATE wp_posts set post_content = replace (post_content,'&nbsp;',' ');

e agora em meus artigos aparecem um

<p> </p> 

em vez da string anterior que estava causando um CR extra entre parágrafos que parecem realmente inúteis e ruins. então estou de volta ao começo. O que eu preciso fazer é substituir por um caractere nulo ou apenas um espaço.

Poderia ter que ser com o e comercial e, nesse caso, devo usar algo como & nbsp; ou algo similar?

Mmm. Bons pontos, tanto Jon Angliss quanto Wim. Jon, como você poderia imaginar, o banco de dados não mostra entradas com essa cadeia de texto. Então, há algo acontecendo dentro do campo post_content.

Wim, o famoso foi substituído anteriormente, mas ainda há centenas de postagens que, por algum motivo, têm algo diferente entre as tags p e / p.

Eu fiz uma pesquisa em uma das postagens com este erro:

mysql> select *  from wp_posts where post_title like '%3DVisionLive%';

E procurando no campo wp_content, este é um pequeno pedaço da postagem:

Phil Eisler, responsable de la divisi?n 3D Vision.?</p>
<p>?</p>
<p>Este portal ser? por tanto

Nenhum til espanhol (acento) mostrado no terminal e, em vez de um espaço, há uma aspa entre as tags pe as tags / p. Eu tentei substituir <p>?</p> , mas novamente, sem resultados. Há algum personagem (ou vários) lá, mas não sei como descobrir isso. Talvez seja o conjunto de caracteres do meu terminal, mas eu acessei o banco de dados do phpmyadmin e, nesse caso, há um caractere de espaço entre o p e o / p. Estranho.

    
por javipas 22.01.2011 / 20:14

3 respostas

1

Minha primeira verificação seria para ver se o que está no banco de dados é o que você realmente acha que é. Por exemplo, você realmente tem postagens com a string exata que está usando? Você tentou fazer um select para ver se essa string combina?

select ID from wp_posts where post_content like '%<p> </p>%'

Se você não obtiver nenhuma resposta, sua string não corresponderá exatamente, e você vai querer começar a descobrir o que realmente está na string, talvez exportar para um arquivo, e ver o conteúdo lá. Além disso, não se esqueça de que a função REPLACE faz distinção entre maiúsculas e minúsculas. < P > não é o mesmo que < p >.

    
por 22.01.2011 / 20:51
0

você pode tentar

UPDATE wp_posts set post_content = replace (post_content,'<p>\n</p>','');

e / ou

UPDATE wp_posts set post_content = replace (post_content,'<p>\n\n</p>','');
    
por 22.01.2011 / 20:22
0

Não há um &nbsp; entre as tags <p> e </p> ? Pelo menos é o que meu conteúdo gerado pelo TinyMCE tem.

    
por 22.01.2011 / 20:41