【发布时间】:2013-03-12 18:43:29
【问题描述】:
我想从我从 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 识别。我已经尝试了很长时间,但我无法做到这一点。所以请帮忙。
附: : 我对常规表达式知之甚少。
【问题讨论】:
-
第一个不起作用,因为您没有指定分隔符,开头和结尾的斜线。 PHP 无法识别
g-flag,因为 preg_match_all 自动匹配所有出现(这就是该标志的作用)。你可能想试试/#[a-z0-9\-_]+/i?注意:i-flag 使正则表达式不区分大小写。 -
/g==_allinpreg_match_all()。首先,您忘记了正则表达式的分隔符,其次,您使用了错误的修饰符。如果这些事情得到解决,这两个中的任何一个都可以正常工作。 -
非常感谢。有用。其实我也试过“/[#][A-Za-z0-9-]/”。然后它说没有指定分隔符。然后我尝试了“/[#][A-Za-z0-9-][/\t]”.. 然后它说未知修饰符''。
-
但是如果我想指定我正在搜索的正则表达式的结尾怎么办。 “/[#][A-Za-z0-9-][/\t]”有什么问题吗?