我正在运行一个sql并检索这个数组:
array(
732 => string '1291385393<>victorias<><><>Application reminder email sent (documentation needed).|1291396439<>smalamatinas<><><>Busy, so will call us on Monday. ' (length=146)
765 => string '1290005590<>smalamatinas<><><>Waiting for phone number. ' (length=56)
767 => string '1300373010<>susanm<><><>Email sent 17/3/11 re availability to work|1364469282<>sarahn<><><>emailed. ' (length=100)
)
不幸的是,对于这种垃圾编码和字符串数据而言,这是非常古老的代码。我认为当笔记保存在数据库中时会发生这种情况,我可以&#39 ;触摸它们,因为系统可能会损坏。
如何在我的笔记时间戳中找到当前日期或(2015)及以上的日期? 我不知道preg_match()是否有好主意?
或者,如果我可以将我的条件分配给mysql查询?
答案 0 :(得分:1)
尝试:
$arr = array(
"1291385393<>victorias<><><>Application reminder email sent (documentation needed).|1291396439<>smalamatinas<><><>Busy, so will call us on Monday. ",
"1290005590<>smalamatinas<><><>Waiting for phone number. ",
"1300373010<>susanm<><><>Email sent 17/3/11 re availability to work|1364469282<>sarahn<><><>emailed. "
);
foreach ($arr as $key => $value) {
preg_match("/^\d+/", $value, $m);
if ( date("Y",$m[0]) >= 2015 ) {
echo $value . "<br>";
}
}
通过array
进行迭代,将timestamp
与转换为年份进行匹配并与2015年进行比较
答案 1 :(得分:1)
这是你可以做到的一种方式:
<?php
$source = '1291385393<>victorias<><><>Application reminder email sent (documentation needed).|1291396439<>smalamatinas<><><>Busy, so will call us on Monday. ';
// parse
list($ts,) = explode('|', $source);
$ts = (int)current(explode('<', $ts));
// format
echo date('d/m/Y H:i:s A', $ts);
?>
输出: 03/12/2010 14:09:53 PM
只有当所有条目都像......那样一致时,这才有效。
如果时间戳位于每个字符串的边界,那么您可以这样做:
$source2 = '1290005590<>smalamatinas<><><>Waiting for phone number. ';
list($ts2,) = explode('<', $source2);
echo date('d/m/Y H:i:s A', (int)$ts2); // Outputs: 17/11/2010 14:53:10 PM
你会像这样使用它:
if (date('Y', (int)$ts2) > 2015)
{
// do something
}
答案 2 :(得分:1)
大概这些十位整数是* nix时间戳,尽管你没有明确说明。只要您愿意忽略“|”之后的时间戳,您就可以使用MySQL来检索这些项的子集。在你的数据中。
例如,此查询将执行此操作。
SELECT FROM_UNIXTIME(message) AS timestamp,
message
FROM note
WHERE FROM_UNIXTIME(message) >= '2011-01-01'
答案 3 :(得分:0)
//Here is list of notes and sub notes that are bigger than current time
$notes = array();
foreach ($userNotes as $key => $value) {
//get list of notes
$arr = explode("|", $value);
foreach($arr as $note) {
//find timestamp in each note
preg_match("/^\d+/",$note, $m);
//if timestamp is bigger than current time
if ($m[0]> time()){
$notes[] = $key;
}
}
}
//list of timestamps that are bigger than current time
debug($notes);