我有以下正则表达式:
preg_replace('/#(?=[\w-]+)/', '', preg_replace('/(?:#[\w-]+\s*)+$/', '', $stringText)
基本上用空字符串替换/删除主题标签。
然而,它对以下内容无效:
#jualbaju #blouse #jualmurah #bajumurah #jakarta #jualbajumurah #bajulucu #korea #dress #jualdress #murahmeriah #jualeceran #jualdressmurah #setelanmurah #jualsetelanmurah #bajupink #pink #jualshortdress #atasanmurah #bajukorea #bajukoreamurah #onlineshopindo #olshop #bajukoreamurah\n#jualbajukoreamurah #jualbajumurmer #dresskorea\n\nMinat hubungi cp di bio :) Line : shaneee22
为什么会这样?
答案 0 :(得分:4)
这应该适合你:
$re = '/#\S+\s*/';
$result = preg_replace($re, '', $input);
编辑:如果您不想从输入中删除换行符,请使用此正则表达式:
$re = '/#\S+[ \t]*/';
答案 1 :(得分:1)
我想谈谈这个话题。我尝试了前两个选项,没有一个工作,它返回空字符串。下面的代码适用于我,我认为它更简单。
$re = '/#*/';
$result = preg_replace($re, '', $input);
答案 2 :(得分:0)
这就是你要找的东西:
$replaced = preg_replace('~#[\w-]+~', '', $yourstring);
请参阅regex demo。
<强>解释强>
#
匹配哈希[\w-]+
匹配一个或多个字词字符或连字符出了什么问题?
preg_replace
没有替换任何内容,因为它无法找到一系列哈希标记,后跟字符串的结尾($
锚点)preg_replace
仅替换了哈希,因为哈希后面的内容只是一个预测(?=[\w-]+)
,它不会消耗字符答案 3 :(得分:0)
我不确定您是否只想删除“#”或带有它的名称。
$string = "#jualbaju #blouse #jualmurah #bajumurah #jakarta #jualbajumurah #bajulucu #korea #dress #jualdress #murahmeriah #jualeceran #jualdressmurah #setelanmurah #jualsetelanmurah #bajupink #pink #jualshortdress #atasanmurah #bajukorea #bajukoreamurah #onlineshopindo #olshop #bajukoreamurah\n#jualbajukoreamurah #jualbajumurmer #dresskorea\n\nMinat hubungi cp di bio :) Line : shaneee22";
//Just the '#' removed
$noHashTag = str_replace('#', '', $string);
//The name too
$noHashTag = preg_replace('/#([\w-]+)/i', '', $string);