我怎样才能明智地删除Instagram标题中的所有尾随标签?

时间:2015-11-07 17:03:29

标签: php regex instagram text-processing

许多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?),则将其从最后一个完整系列中的第一个中删除。

2 个答案:

答案 0 :(得分:1)

看起来会这样做:

$result = preg_replace('/#[#\w\s]*\z/', '', $subject);

DEMO

正则表达式匹配哈希(#),后跟零个或多个组成主题标签的字符加上分隔它们的空格([#\w\s]*),后跟字符串的结尾( \z)。

\w相当于[A-Za-z0-9_]。如果主题标签中允许使用其他字符,或者不允许使用数字,请告诉我,我将更新正则表达式。

更新:如果你想删除所有robo-tag而留下合法的robo-tag,那么可能没有可靠的方法 - 当然不能单独使用正则表达式。但是,这将删除除第一个标签之外的所有内容:

$result = preg_replace('/^(#[#\w\h]+\R)#[#\w\s]*\z/m', '$1', $subject);

DEMO

\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

祝你好运!!