Заменить текст пробелами в 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,' ',' ');
и теперь в моих статьях появляются
<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>','');
Разве нет
между <p>
а также </p>
теги? По крайней мере, это то, что есть у моего контента, созданного TinyMCE.