我有一个文章页面,其中列出了与该文章相关的标签。当用户点击标签时,它会将它们带到Algolia搜索结果页面。这是一个Wordpress网站。我的一些标签碰巧包含了&符号,例如" Spades&例如,Shovels&#34 ;.
我注意到的是,当我对此术语进行urlencode时,当我通过查询字符串发送搜索时,它不会在搜索框中正确显示搜索字词。
我试过这个并认为这是秘诀,但它并不总是有效。
$tag_name = json_encode(urlencode(html_entity_decode($tag->name)));
对标记名称进行编码的最佳方法是什么,以便当我通过查询字符串将其传递到搜索结果页面时,它会正确处理它?</ p>
我做了更多测试,我在搜索结果页面上注意到一些奇怪的事情。如果我来搜索页面时搜索框字段为空,但是传递了post_id(我在动态加载与过滤器部分中的帖子相关联的标签),我可以看到&#34;黑桃&amp;铲&#34;在那里列出,它的数量为&#34; 65&#34;在它旁边。
如果我输入&#34;黑桃&amp;铲&#34;进入搜索框,我看到边栏中的数字很快下降到10。
当我在查询字符串中传递标记时,无论我如何编码它,它似乎都不起作用。我的意思是我看到了Spades&amp; amp;铲入搜索框,但我没有得到任何结果。它非常奇怪,但可能是我想要解决的简单事情。我需要能够通过&amp;在我的搜索结果页面的查询字符串中,但我没有找到在网址中发送&符号的正确公式,以便工作。
我在查询字符串中传递的值似乎与实际标记名称不完全匹配。
我尝试了所有这些可能性和不同的组合:
$clean_tag = json_encode(urlencode(html_entity_decode($tag->name)));
$clean_tag = htmlspecialchars_decode($clean_tag);
$clean_tag = html_entity_decode($clean_tag);
$clean_tag = urlencode($clean_tag);
$clean_tag = htmlentities($clean_tag);
$clean_tag = html_entity_decode($clean_tag);
$clean_tag = json_encode($clean_tag);
这些似乎都无法解决问题。有什么想法吗?