And*_* SK 3 php regex preg-replace
只有当hashtag在字符串末尾的任何地方时,我才需要从hashtags中删除#字符.例子:
我这个月要去#Disney!#WDW
我这个月要去#Disney.#WDW #Orlando
我本月要去#Disney #WDW #Orlando
他们需要转换为:
我这个月要去迪士尼!
我这个月要去迪士尼.
我这个月要去迪士尼
此代码将删除所有#字符:
function remove_hashtags($string){
$result = preg_replace('/#([\w-]+)/i', '$1', $string);
return $result;
}
Run Code Online (Sandbox Code Playgroud)
...但在此之前,需要删除字符串末尾的主题标签(或一组主题标签).
这个怎么样?
function remove_hashtags($string){
return str_replace('#', '',
preg_replace('/(?:#[\w-]+\s*)+$/', '', $string));
}
Run Code Online (Sandbox Code Playgroud)
我假设你只需要删除所有'#'字符 - 而不仅仅是"hashtag identifier candidates"后面的字符(=匹配[\w-]+模式).
如果这是您的任务,则应相应调整代码:
function remove_hashtags($string){
return preg_replace('/#(?=[\w-]+)/', '',
preg_replace('/(?:#[\w-]+\s*)+$/', '', $string));
}
Run Code Online (Sandbox Code Playgroud)
我在这里用lookahead取代了捕获组.此外,/i在两种情况下都不需要修饰符:\w特殊字符包括两者a-z和A-Z范围.