我正在尝试修复我的推特订阅源,我想将我的推文的时间戳链接到每个推文的页面。
我用正则表达式创建了我的函数作为推特的时间戳,但它似乎不起作用。
时间戳的格式是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个url。
问题是,当函数运行时,我得到的只是主题(大约xx分钟/小时/天之前)。我在php.net中读到,当你取回主题时,意味着没有找到maches,这让我得出结论,我的正则表达式是错误的。
所以,我想我想找出的是我使用的正则表达式是错是对。
尝试以下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)
您可以尝试以下正则表达式:
about [0-9]{2}/[0-9]{2}/[0-9]{2}
为了确保您生成的语法,您可以使用在线regex测试网站对其进行测试。以下是一个示例网站:http://regexpal.com/
/about + /[0-9] + / minute[s]|day[s] ago/
^ ^
| |
| |
repetition one or more: here one or more space then followed
by another space
我想这不是你想要的。还有更多的问题,但我倾向于保持简单,一次解决一个问题。为什么不从这个开始呢?
尝试使用此
前约xx分钟/小时/天
about [0-9]{2} [0-9]{2}/[0-9]{2}/(0?[1-9]|[12][0-9]|3[01]) ago