Сначала давайте разберемся с неправильным представлением: этот символ в вашем примере не является «специальным» символом. Это кодовая точка 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 находится в связанном состоянии шнурков . Избегайте их.