2017-01-23 64 views
1

我使用以下函数(在我的Wordpress儿童主题功能文件以及插件中都尝试过 - 在两种情况下都可以使用)从帖子标题中删除主题标签。这个函数做了我想要的,但是所有的标题(帖子正文内容都可以,只是标题)现在正在显示字符的HTML数字(即'= & 8217;和& = & 038;和 - = & 8211;)。我的php函数做我想要的,但输出将字符转换为ASCII

所以这个标题

这#testing的&和撇号#tagstitle #cats #cat #instagramcats

成为

这& 8217; S测试& 038;和撇号

它根据需要删除主题标签,但创建字符问题。

function remove_hashtags($string){ 
    return preg_replace('/#(?=[\w-]+)/', '', 
    preg_replace('/(?:#[\w-]+\s*)+$/', '', $string)); 
} 
add_filter('the_title', 'remove_hashtags'); 

我试图增加额外的代码:PHP上读了(我只是学习)后

html_entity_decode('the_title', ENT_QUOTES | ENT_XML1, 'UTF-8'); 

的功能,但它似乎没有工作,我不知道如何使用

html_entities($string) 

(问题的更新加入更多的信息)

我基本上采取了代码here - 那正是我所需要的。我只是添加了过滤WordPress帖子标题的最后几行。

我不想让它太复杂的问题,但理想情况下,我想从文本中删除标签并实际上从它们创建帖子标签。我发现了每个部分的几个答案,我只是不知道如何把它放在一起。忘记,虽然...我真的只是想知道为什么突然之间ascii号码正在取代原标点符号。

+3

为什么不只是str_replace函数(“#”,“”,$字符串),而不是正则表达式?此外,你的回报是在第二个preg_replace之前,这意味着它永远不会执行。 – Kaylined

回答

0

如果你只是想删除主题标签,你可以使用str_replace("#","",$string);

相关问题