查找我的Twitter时间戳(PHP)的正则表达式

时间:2013-08-29 09:28:36

标签: php regex twitter

我正在尝试修复我的推文Feed,并希望将推文的时间戳与每个推文的页面相关联。

我使用正则表达式为我的推文时间戳创建了我的函数,但它似乎无法正常工作。

时间戳的格式为about xx minute(s)/hour(s)/day(s) ago,我用下面的正则表达式来描述它。

$tweet="/about + /[0-9] + / minute[s]|day[s] ago/";

这可能是完全错误的,但我是新手,我很感激任何帮助。

非常感谢提前!

编辑:我的Feed的格式为:大约xx分钟/小时/天前:推文包括主题标签/用户名/网址的链接。

我的功能基本上检查[约xx分钟/小时/天前]中的任何内容是否与$ tweet格式匹配,然后它将https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name=whatever&count=2 url传递给它。

事情是,当该功能运行时,我回来的只是主题(约xx分钟/小时/天)之后。我在php.net上读到,当你找回主题时,这意味着找不到任何一个maches,这让我得出结论我的正则表达式是错误的。

所以,我想我想知道的是我使用的正则表达式是错还是正确。

4 个答案:

答案 0 :(得分:0)

您可以尝试使用此正则表达式:

about [0-9]{2}/[0-9]{2}/[0-9]{2}

为了确保您生成的语法,您可以使用在线正则表达式测试人员网站对其进行测试。以下是一个示例网站:http://regexpal.com/

答案 1 :(得分:0)

 /about + /[0-9] + / minute[s]|day[s] ago/
        ^        ^
        |        |
        |        |
    repetition one or more: here one or more space then followed 
    by another space

我想这不是你想要的。还有更多的问题,但我倾向于保持简单,一次做一个修复。为什么不从这个开始?

答案 2 :(得分:0)

尝试关注preg_match

preg_match('/about ([0-9]+) (minute[s]?|hour[s]?|day[s]?) ago/', $string, $matches);

输出

array (size=3)
  0 => string 'about 53 hour ago' (length=17)
  1 => string '53' (length=2)
  2 => string 'hour' (length=4)

array (size=3)
  0 => string 'about 20 minutes ago' (length=20)
  1 => string '20' (length=2)
  2 => string 'minutes' (length=7)

array (size=3)
  0 => string 'about 2 day ago' (length=15)
  1 => string '2' (length=1)
  2 => string 'day' (length=3)

答案 3 :(得分:0)

试试这个

约xx分钟/小时/天前

about [0-9]{2} [0-9]{2}/[0-9]{2}/(0?[1-9]|[12][0-9]|3[01]) ago