许多Instagram帖子以过多的标签结尾,例如:
"This is one of the amazing Mountains you can find in the National Forest Park in #Zhangjiajie #Chinawhich is where James Cameron drew his inspiration for the flying mountains in #Avatar..
Credit: @phototravelnomads
#pictoura #gydr
#destinationearth #earthpix #ourlonelyplanet#wonderful_earthLife #timeoutsociety#fantastic_earthpics #liveoutdoors #igglobalclub#awesomeearth #mist_vision #earthdeluxe
# #worldbestgram #mthrworld #fantastic_earth#famouscaptures #destination_wow #dreamlifepix#wonderful_places #igworldclub #ig_global_life
#natureaddict #beautifuldestinations #traveler #guider#locals"
我正在寻找处理标题以在最后删除主题标签集合,而其余部分保持不变。这样做有什么好办法?我相信我可以找到一种蛮力的方式,但我希望能够对优雅的解决方案有所了解。不必是实际代码。 :)
编辑per burna的评论:预期结果将是:
"This is one of the amazing Mountains you can find in the National Forest Park in #Zhangjiajie #Chinawhich is where James Cameron drew his inspiration for the flying mountains in #Avatar..
Credit: @phototravelnomads"
根据艾伦·摩尔的回答编辑:这很有效,但不是在所有情况下。例如,如果输入文本是:
"This is one of the amazing Mountains you can find in the National Forest Park in #Zhangjiajie #Chinawhich is where James Cameron drew his inspiration for the flying mountains in #Avatar"
......它会被“#Zhangjiajie”切断。
我认为可能需要更多逻辑,可能将字符串拆分为数组;检查它是否以标签结尾;若然那么多少;如果大于X(4?),则将其从最后一个完整系列中的第一个中删除。
答案 0 :(得分:1)
看起来会这样做:
$result = preg_replace('/#[#\w\s]*\z/', '', $subject);
正则表达式匹配哈希(#
),后跟零个或多个组成主题标签的字符加上分隔它们的空格([#\w\s]*
),后跟字符串的结尾( \z
)。
\w
相当于[A-Za-z0-9_]
。如果主题标签中允许使用其他字符,或者不允许使用数字,请告诉我,我将更新正则表达式。
更新:如果你想删除所有robo-tag而留下合法的robo-tag,那么可能没有可靠的方法 - 当然不能单独使用正则表达式。但是,这将删除除第一个行标签之外的所有内容:
$result = preg_replace('/^(#[#\w\h]+\R)#[#\w\s]*\z/m', '$1', $subject);
\h
仅匹配水平空格(空格,制表符,...),\R
匹配任何行分隔符(\r\n
或任何单个垂直空白字符)。
对于文本中类似标签的东西,这不会触及它们,因为它锚定在文本的末尾。行首锚(多行模式中的^
)并不是必需的,但它可以帮助正则表达式的未来读者(包括你自己)理解它的作用。当然,评论会有所帮助。 ;)
答案 1 :(得分:0)
如果我理解正确,以下内容应该有效:
$hashTag="pictoura #gydr
destinationearth #earthpix #ourlonelyplanet#wonderful_earthLife #timeoutsociety#fantastic_earthpics #liveoutdoors #igglobalclub#awesomeearth #mist_vision #earthdeluxe
#worldbestgram #mthrworld #fantastic_earth#famouscaptures #destination_wow #dreamlifepix#wonderful_places #igworldclub #ig_global_life
natureaddict #beautifuldestinations #traveler #guider#locals";
echo preg_replace('/(#.*\s*)/','',$hashTag);
输出:
pictoura destinationearth natureaddict