我想从我从 Twitter 检索的推文中解析主题标签。现在,我没有在 api 中找到任何可用的东西。所以,我正在使用 php 自行解析它。我已经尝试了几件事。
<?php
$subject = "This is a simple #hashtag";
$pattern = "#\S*\w";
preg_match_all($pattern, $subject, $matches, PREG_OFFSET_CAPTURE);
print_r($matches);
?>
我也试过
$pattern = "/[#]"."[A-Za-z0-9-_]"."/g";
但是它显示/g 不被 php 识别。我已经尝试这样做很长时间了,但我无法做到这一点。所以请帮忙。
附言: 我对正则表达式知之甚少。
最佳答案
您需要考虑主题标签可能出现的位置。分三种情况:
- 在推文的开头,
- 空格后,
- 在单词的中间 - 这不能算作主题标签。
所以这将正确匹配它们:
'/(^|\s)\#\w+/'
解释:
^
可以在OR 语句中使用\s
用于捕捉空格、制表符和换行符
完整代码如下:
<?php
$subject = "#hashtag This is a simple #hashtag hello world #hastag2 last string not-a-hash-tag#hashtag3 and yet not -#hashtag";
$pattern = "/(?:^|\s)(\#\w+)/";
preg_match_all($pattern, $subject, $matches, PREG_OFFSET_CAPTURE);
print_r($matches);
?>
关于php - 在 twitter API PHP 中解析主题标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15578314/