Как удалить специальные символы в WordPress? - PullRequest
0 голосов
/ 19 сентября 2011

Я использую Topsy, мне возвращается заголовок статьи с самым высоким рейтингом моего сайта, мне возвращается один RSS-файл, который содержит заголовок записи с этой ссылкой. Пока я беру только название поста и использую заголовок поста, пытаюсь выполнить поиск в базе данных mysql, используя следующую функцию:

get_post_by_title($postTitle,'post');

Но проблема в том, что topsy возвращает мне заголовок сообщения, но он также добавляет некоторые специальные символы в RSS-файл, такие как "", замените на "’ "этот символ. Из-за этой get_post_by_title() функция не возвращает мне сообщение по названию.

РЕДАКТИРОВАТЬ: возвращает мне один заголовок сообщения, как это:

iPad Applications In Bloom’s Taxonomy NEXT

Здесь одиночная кавычка - особый характер.

Пожалуйста, помогите мне. Спасибо

Ответы [ 3 ]

0 голосов
/ 10 августа 2012

Сначала давайте разберемся с неправильным представлением: этот символ в вашем примере не является «специальным» символом. Это кодовая точка Unicode U + 2019, «ПРАВИЛЬНО ОДНОКВАЖНАЯ КВАРТИРА. Ссылка на сущность HTML: ’. Это обычный символ - это просто обычный символ, который не представлен в ASCII. Прежде чем перейти к ответу на ваш конкретный вопрос, я должен сказать вам, чтобы вы прочитали статью Джоэла Спольски «Абсолютный минимум, который должен знать каждый разработчик программного обеспечения о юникоде и наборах символов (никаких оправданий!)» - это как раз то, что написано на банке, и если вы не освоите хотя бы немного больше знаний о Юникоде, вы продолжите сталкиваться с такими проблемами. Не беспокойтесь слишком сильно: все сталкиваются с такими проблемами, пока не научатся обращаться с текстом. Юникод не так «сложен», как «склонен к тому, чтобы выставлять бессознательные предположения о том, как работает текст». †

Теперь к вашему вопросу.

Если я правильно вас понял, то, что с вами происходит, это то, что у вас есть сообщения с не-ASCII-символами в заголовках, таких как ’, которые не отображаются при поиске их с помощью get_post_by_title() (это Похоже, вы используете что-то похожее на принятый ответ на этот вопрос - это правильно?) Есть два пути к решению: хранить заголовки в формате, который легче искать, или использовать метод поиска, который может найти не-ASCII символы.

Для хранения названий по-другому потребуется, чтобы вы запустили их с помощью встроенной в PHP функции htmlentities () или перед сохранением их в БД Wordpress - вы также должны убедиться, что вы конвертируете символы без HTML-сущность, эквивалентная '\xNN' форме, и убедитесь, что для параметров сортировки / кодировки вашей БД задано UTF-8 или другая кодировка с поддержкой Юникода. Это будет нетривиальное количество усилий. ‡

Использование другого метода поиска не требует возиться с вашей БД или копаться во внутренностях WordPress, но требует очень осторожного поиска строки поиска. Вам нужно будет либо использовать именно тот символ, который вы ищете в поиске, выраженное в виде ссылки на символ '\xNN', если необходимо, либо осторожно использовать подстановочные знаки в поиске.

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



†: Кстати, ваша жизнь в отношении Unicode также станет намного, намного проще, если вы будете использовать лучшие языки, чем PHP, и лучшие базы данных, чем MySQL. WordPress неразрывно связан с PHP и MySQL: PHP и MySQL ужасно, ужасно и безумно плохо справляются с проблемами Юникода. Ваша жизнь как программиста улучшится, если вы избавитесь от PHP и MySQL.

‡: Серьезно, PHP ужасно плох в этом , а MySQL находится в связанном состоянии шнурков . Избегайте их.

0 голосов
/ 07 апреля 2017

удалить из wp-config.php

// define ('DB_CHARSET', 'utf8');

// определить ( 'DB_COLLATE', 'utf8_unicode_ci');

0 голосов
/ 10 августа 2012

Вы можете легко удалить специальные символы, используя preg_replace, см. Этот пост -> http://code -tricks.com / filter-non-ascii-characters-using-php /

...