匹配并删除字符串中的Twitter标签标签
只有当标签位于字符串末尾的任何位置时,我才需要从#标签中删除#字符。示例:匹配并删除字符串中的Twitter标签标签
我要去#Disney本月! #WDW
我要去#Disney这个月。 #WDW #Orlando
我要#Disney本月#WDW #Orlando
他们需要被转换为:
我这个月要去迪士尼!
我要去迪士尼这个月。
我要去迪士尼本月
此代码将删除所有#字符:
function remove_hashtags($string){
$result = preg_replace('/#([\w-]+)/i', '$1', $string);
return $result;
}
...但在此之前,包括hashtag(或主题标签组)在需要删除字符串的末尾。
这个怎么样?
function remove_hashtags($string){
return str_replace('#', '',
preg_replace('/(?:#[\w-]+\s*)+$/', '', $string));
}
我想在这里你只需要删除所有“#”字符 - 而不仅仅是那些其次是“井号标签标识的候选人”(=匹配[\w-]+
模式)。
如果这是你的任务,代码应相应调整:
function remove_hashtags($string){
return preg_replace('/#(?=[\w-]+)/', '',
preg_replace('/(?:#[\w-]+\s*)+$/', '', $string));
}
我已经更换了捕获组,先行在这里。此外,两种情况下都不需要/i
修饰符:\w
特殊字符涵盖a-z
和A-Z
范围。
优雅和有效的解决方案,谢谢! – andufo
这也删除了像'这样的实体 – woodscreative
小心使用这个考虑一个字符串与实体将被删除我'米 – woodscreative