我想将推文标记化。您可能知道,推文通常有非正式形式,如下所示:
This is a common Tweet #format where @mentions and.errors!!!!like this:-))))) might #appear❤ ❤☺❤#ThisIsAHashtag!?!
你也可能有UNICODE格式的表情符号(心,微笑等)。 我正在使用preg_split进行标记化。所需的输出是:
This
is
a
common
Tweet
#format
where
@mentions
and
.
errors
!!!!
like
this
:-)))))
might
#appear
❤
❤
☺
❤
#ThisIsAHashtag
!?!
到目前为止我实施的当前preg_split是:
preg_split('/(?<=\s)|(?<=\w)(?=[.,:;!?(){}-])|(?<=[.,!()?\x{201C}])(?=[^ ])/u', $tweet);
任何帮助都表示赞赏。
答案 0 :(得分:4)
您可以将此模式与preg_match_all
:
~[#@]?\w+|\pP+|\S~u
注意:如果您需要对其他类型的字符进行分组,则可以轻松扩展此模式。货币示例:
~[#@]?\w+|\pP+|\p{Sc}+|\S~u