在PHP中查找括号内的文本

在PHP中查找括号内的文本,php,Php,我将值从一个页面传递到另一个页面,如下所示 日期+开始时间+结束时间 格式为2014年8月24日星期日凌晨02:00中午12:00 我使用了类似于substr的东西($_POST['datetimevalue'],0,-11)取消连接值,但我遇到日期大小的问题,因为有时月份的大小可能会变小或变大 我可以切换到开始时间+结束时间+日期的格式,但这仍然是个坏主意 我希望将格式更改为date+{start time}+[end time],这样它将像2014年8月24日的Sun{02:00am}[12

我将值从一个页面传递到另一个页面,如下所示

日期+开始时间+结束时间

格式为2014年8月24日星期日凌晨02:00中午12:00

我使用了类似于substr的东西($_POST['datetimevalue'],0,-11)取消连接值,但我遇到日期大小的问题,因为有时月份的大小可能会变小或变大

我可以切换到开始时间+结束时间+日期的格式,但这仍然是个坏主意

我希望将格式更改为date+{start time}+[end time],这样它将像2014年8月24日的Sun{02:00am}[12:00pm]


如何找到
{}
中的值和
[]
中的值?

我认为此函数适用于您

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
我建议你使用一种新的方法

$value = '24th of August 2014 Sun{02:00am}[12:00pm]';
preg_match('/(.+){(.+)}\[(.+)\]/', $value, $matches);;
list( , $date, $start, $end ) = $matches;