正则表达式从字符串中删除#标签

时间:2014-10-21 02:56:37

标签: php regex

我有以下代码,正则表达式试图从字符串中删除#标签:

$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

1 个答案:

答案 0 :(得分:3)

您首先使用正向前瞻断言,只有断言指定的字符跟随前一个英镑符号,这是仅从输入字符串中删除井号的原因。其次,您尝试使用级联preg_replace()调用,这是不必要的。您可以在一次通话中完成此操作......

$newCaption = preg_replace('/#\S+ */', '', $text);

注意:您的bag也没有前面的主题标签,因此结果也会保留。

输出

bag 
Bella top

Size s m l

Idr 99.000

Line: merlinehadiwijaya

Code Demo