我将值从一个页面传递到另一个页面,如
日期+开始时间+结束时间
将采用2014年8月24日Sun02:00am12:00pm格式。
我正在使用类似substr($_POST['datetimevalue'], 0, -11);
的内容去取消连接值,但我遇到了日期大小的问题,因为有时候月份的大小可能会变得更小或更多。
我可以切换到格式开始时间+结束时间+日期,但它仍然是一个坏主意。
我希望将格式更改为日期+ {开始时间} + [结束时间],以便它将像2014年8月24日太阳{02:00 am} [12:00 pm]
如何找到{ }
中的值和[ ]
中的值?
答案 0 :(得分:1)
我建议您使用regular expression。
$value = '24th of August 2014 Sun{02:00am}[12:00pm]';
preg_match('/(.+){(.+)}\[(.+)\]/', $value, $matches);;
list( , $date, $start, $end ) = $matches;
<强> DEMO 强>
答案 1 :(得分:0)
我认为这个功能对你有用。
function findByDelimiters ($string, $start, $end) {
$initial_pos = strpos($string, $start);
if ($initial_pos !== false) {
$substr = substr($string, $initial_pos + strlen($start));
$final_pos = strpos($substr, $end);
if ($final_pos !== false) {
return trim(substr($substr, 0, $final_pos));
} else {
throw new Exception('Delimiter opened, but not closed (Input: ' . $string . ', open: ' . $start . ', expected close: ' . $end);
}
}
return false;
}
使用示例:
findByDelimiters ('August 2014 Sun{02:00am}[12:00pm]', '{', '}') // Prints: 02:00am
findByDelimiters ('August 2014 Sun{02:00am}[12:00pm]', '[', ']') // Prints: 12:00pm