Я просто пытаюсь сравнить две строки, чтобы убедиться, что они точно совпадают. Если они совпадают, я вывожу список. Одна строка — это заголовок сообщения (настраиваемый тип сообщения) из Wordpress, использующий get_the_title(). Другая строка — это категория из Wordpress. Я использую get_categories(), затем оператор foreach и использую $category->name.
На этом веб-сайте вы можете увидеть, что для некоторых вебинаров он работает нормально, и список отображается. Но для любого вебинара с тире и/или амперсандом в названии это не работает.
https://www.financialpoise.com/testwebs/page/2/
Я попытался выполнить htmlentities() перед сравнением строк, и это ничего не изменило. Ниже показано, как я сравниваю:
foreach ( $categories as $category ) {
if (strpos(get_the_title(), $category->name) !== false) {
//run code here
}
}
Есть ли лучший/более простой способ просто сравнить две строки, чтобы увидеть, совпадают ли они?
Если нет, то почему тире или амперсанд могут привести к сбою функции strpos()? Теоретически переменные игла и стог сена могут быть в любом порядке, потому что он ищет полную строку в другой полной строке.
Наконец, чтобы вы могли убедиться в том, что в нашем Wordpress нет проблем, посмотрите на эту картинку. Название поста точно соответствует категории этого поста. Это то, что я пытаюсь сравнить.







Вы можете установить их слаги и сравнить их как более простой и безопасный способ.
Это сработало для меня. Потребовалось немного времени, чтобы убедиться, что все пули одинаковы, но как только они появились, проблем не возникло. Мне даже не нужно больше использовать strpos(), я могу просто сравнить, используя ==. Спасибо!
Посмотрите на полную строку (без декодирования HTML) и посмотрите, закодирована ли одна, а другая нет.