0

我正在尝试修复我的推特提要,并且我想将我的推文的时间戳链接到每条推文的页面。

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

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

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

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

提前谢谢了!

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

我的函数基本上检查 [大约 xx 分钟/小时/天前] 中的任何内容是否与 $tweet 格式匹配,然后它通过https://api.twitter.com/1.1/statuses/ user_timeline.json?screen_name=whatever&count=2网址。

问题是,当函数运行时,我得到的只是主题(大约 xx 分钟/小时/天前)。我在 php.net 中读到,当你找回主题时,这意味着没有找到任何机器,这让我得出结论,我的正则表达式是错误的。

所以,我想我想要找出的是我使用的正则表达式是错误的还是正确的。

4

4 回答 4

0

你可以试试这个正则表达式:

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

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

于 2013-08-29T09:38:55.680 回答
0
 /about + /[0-9] + / minute[s]|day[s] ago/
        ^        ^
        |        |
        |        |
    repetition one or more: here one or more space then followed 
    by another space

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

于 2013-08-29T09:42:20.990 回答
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)
于 2013-08-29T09:54:56.637 回答
0

试试这个

大约 xx 分钟/小时/天前

about [0-9]{2} [0-9]{2}/[0-9]{2}/(0?[1-9]|[12][0-9]|3[01]) ago
于 2013-08-29T09:59:40.417 回答