php - 正则表达式从字符串中删除主题标签

标签 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

最佳答案

您首先使用的是 Positive Lookahead 断言,该断言仅断言指定字符跟在前面的井号之后,这就是只从输入字符串中删除井号的原因。其次,您正在尝试使用不必要的级联 preg_replace() 调用。你可以简单地在一个电话中完成这个......

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

注意:您的 bag 也没有前面的 hashtag,因此这也会保留在结果中。

输出

bag 
Bella top

Size s m l

Idr 99.000

Line: merlinehadiwijaya

Code Demo

关于php - 正则表达式从字符串中删除主题标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26478194/

相关文章:

PHP:SQL 查询从任何表中选择 php 数组提供的列

javascript - 标记化字符串的正则表达式

javascript - 将正则表达式从 JavaScript 移植到 PHP

javascript 正则表达式后面不跟特定字符

php - "×"字符打破 MySQL 记录

php - 表单域不显示

php - 开关盒中的 0?

javascript - 我可以在没有访问 token 的情况下获取 Instagram 照片的所有评论吗?

regex - 如何匹配正则表达式中的所有 unicode 字母字符和空格?

php - 将 PHP 结束标记转换为注释