Заменить текст пробелами в MySQL

Я пытаюсь выполнить глобальную замену поиска в моей базе данных, в которой много статей с двойным возвратом каретки из-за этого кода:

<p> </p>

Я хотел бы заменить это в своем блоге WordPress, чтобы вместо этого появилось... ничего, и я мог бы удалить CR. Я пробовал это в моей базе данных

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

но не сработало. Зачем? Нужно ли добавлять особые мысли, чтобы рассмотреть пространство между <p>и</p>?


Ммм. Хорошие моменты, как Джон Энглисс, так и Вим. Джон, как вы уже догадались, база данных не показывает записей с этой текстовой строкой. Так что внутри поля post_content что-то происходит.

Вим, знаменитый был заменен ранее, но есть еще сотни постов, которые по какой-то причине имеют что-то другое между тегами p и / p.

Я сделал поиск одного из сообщений с этой ошибкой:

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

И, глядя в поле wp_content, это небольшой фрагмент поста:

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

На терминале не отображается испанская тильда (акцент), и вместо пробела между тегами p и / p стоит кавычка. Я пытался заменить <p>?</p>, но опять же, никаких результатов. Там есть какой-то персонаж (или несколько), но я не знаю, как это обнаружить. Может быть, это набор символов моего терминала, но я получил доступ к базе данных из phpmyadmin, и в этом случае между p и / p стоит пробел. Weird.


Ну, есть больше информации об этом После попытки нескольких вещей, я сделал это заменить:

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

и теперь в моих статьях появляются

<p> </p> 

вместо предыдущей строки, которая вызывала дополнительный CR между абзацами, который выглядит действительно бесполезным и плохим. так что я вернулся в начале. Что мне нужно сделать, это заменить нулевой символ или просто пробел.

Может ли это быть с амперсандом, и в этом случае я должен использовать что-то вроде & nbsp; или что-то подобное?


Ммм. Хорошие моменты, как Джон Энглисс, так и Вим. Джон, как вы уже догадались, база данных не показывает записей с этой текстовой строкой. Так что внутри поля post_content что-то происходит.

Вим, знаменитый был заменен ранее, но есть еще сотни постов, которые по какой-то причине имеют что-то другое между тегами p и / p.

Я сделал поиск одного из сообщений с этой ошибкой:

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

И, глядя в поле wp_content, это небольшой фрагмент поста:

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

На терминале не отображается испанская тильда (акцент), и вместо пробела между тегами p и / p стоит кавычка. Я пытался заменить <p>?</p>, но опять же, никаких результатов. Там есть какой-то персонаж (или несколько), но я не знаю, как это обнаружить. Может быть, это набор символов моего терминала, но я получил доступ к базе данных из phpmyadmin, и в этом случае между p и / p стоит пробел. Weird.

3 ответа

Решение

Моя первая проверка будет состоять в том, чтобы увидеть, является ли то, что находится в БД, тем, что вы действительно думаете. Например, действительно ли у вас есть сообщения, в которых есть точная строка, которую вы используете? Вы пытались сделать выбор, чтобы увидеть, соответствует ли эта строка?

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

Если вы не получили никаких ответов, значит, ваша строка не совпадает точно, и вы захотите начать выяснять, что на самом деле находится в строке, возможно, экспортировать ее в файл и посмотреть ее содержимое. Также не забывайте, что функция REPLACE чувствительна к регистру, поэтому

не совпадает с

.

Ты можешь попробовать

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

и / или

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

Разве нет &nbsp; между <p> а также </p> теги? По крайней мере, это то, что есть у моего контента, созданного TinyMCE.

Другие вопросы по тегам