仅当主题标签位于字符串末尾以外的任何位置时,我才需要从主题标签中删除 # 字符。例子:
这个月我要去#迪士尼! #WDW
这个月我要去#迪士尼。 #WDW #奥兰多
这个月我要去#迪士尼#WDW #奥兰多
它们需要转换为:
这个月我要去迪士尼!
这个月我要去迪士尼。
这个月我要去迪士尼
此代码将删除所有 # 字符:
function remove_hashtags($string){
$result = preg_replace('/#([\w-]+)/i', '$1', $string);
return $result;
}
...但在此之前,需要删除字符串末尾的主题标签(或主题标签组)。
这个怎么样?
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
and A-Z
ranges.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)