我有以下代码,正则表达式试图从字符串中删除#标签:
$text = "#jualan #jualanku #bag #bandung #jakarta #olshop #olshopindo #olshopindonesia #trusted #trustedseller #trustedolshop #tas #tasbagus #goodquality #premium #premiumquality #trixie #trixie bag #baju #kaos #spandex #bestseller #trixiewardrobe \nBella top\n\nSize s m l\n\nIdr 99.000\n\nLine: merlinehadiwijaya";
$newCaption = preg_replace('/#(?=[\w-]+)/', '', preg_replace('/(?:#[\w-]+\s*)+$/', '', $text));
然而它只删除'#'而不是整个#标签。我的正则表达式中我做错了什么?
我希望结果是:
\nBella top\n\nSize s m l\n\nIdr 99.000\n\nLine: merlinehadiwijaya
答案 0 :(得分:3)
您首先使用正向前瞻断言,只有断言指定的字符跟随前一个英镑符号,这是仅从输入字符串中删除井号的原因。其次,您尝试使用级联preg_replace()
调用,这是不必要的。您可以在一次通话中完成此操作......
$newCaption = preg_replace('/#\S+ */', '', $text);
注意:您的bag
也没有前面的主题标签,因此结果也会保留。
输出
bag
Bella top
Size s m l
Idr 99.000
Line: merlinehadiwijaya