php使用日期格式拆分字符串

php使用日期格式拆分字符串,php,preg-match,str-replace,preg-split,Php,Preg Match,Str Replace,Preg Split,我有一个简单的字符串,其中应包含姓名和出生日期,如下所示: $searchParams = '12/12/1978 Bob Smithers'; 或者 $searchParams = 'Bob Smithers 12/12/1978'; 如果字符串中存在日期,我需要做的是将日期与名称分开。我可以通过下面的代码获得日期,尽管如果按照上面第一个示例的顺序进行排序,这会带来一些怪癖 $splitData=preg_split('/([0-9]{1,2})-([0-9]{1,2})-([0-9]{2

我有一个简单的字符串,其中应包含姓名和出生日期,如下所示:

$searchParams = '12/12/1978 Bob Smithers';
或者

$searchParams = 'Bob Smithers 12/12/1978';
如果字符串中存在日期,我需要做的是将日期与名称分开。我可以通过下面的代码获得日期,尽管如果按照上面第一个示例的顺序进行排序,这会带来一些怪癖

$splitData=preg_split('/([0-9]{1,2})-([0-9]{1,2})-([0-9]{2,4})$/', $searchParams);
第二个示例返回一个数组:

<pre class='xdebug-var-dump' dir='ltr'>
<b>array</b>
<i>(size=2)</i>
0 <font color='#888a85'>=&gt;</font> <small>string</small>
<font color='#cc0000'>'bob smithers '</font>
<i>(length=13)</i>
1 <font color='#888a85'>=&gt;</font> <small>string</small>
<font color='#cc0000'>''</font>
<i>(length=0)</i>

排列
(尺寸=2)
0=字符串
“鲍勃·史密斯”
(长度=13)
1=字符串
''
(长度=0)

我需要的是将字符串分成两部分-一部分包含日期,另一部分包含名称

A
regex
免费解决方案[适用于这两种情况]


A
regex
免费解决方案[适用于两种情况]


A
regex
免费解决方案[适用于两种情况]


A
regex
免费解决方案[适用于两种情况]


您可以使用这个简单的函数,它将返回数组中的日期和字符串的其余部分:

功能条名称和日期($searchParams){
$pattern='~\d{2}/\d{2}/\d{4}';
preg_match_all($pattern、$searchParams、$matches);
$name=trim(preg_replace($pattern,,$searchParams));
返回数组('name'=>$name,'dates'=>$matches[0]);
}

您可以使用这个简单的函数,它将返回数组中的日期和字符串的其余部分:

功能条名称和日期($searchParams){
$pattern='~\d{2}/\d{2}/\d{4}';
preg_match_all($pattern、$searchParams、$matches);
$name=trim(preg_replace($pattern,,$searchParams));
返回数组('name'=>$name,'dates'=>$matches[0]);
}

您可以使用这个简单的函数,它将返回数组中的日期和字符串的其余部分:

功能条名称和日期($searchParams){
$pattern='~\d{2}/\d{2}/\d{4}';
preg_match_all($pattern、$searchParams、$matches);
$name=trim(preg_replace($pattern,,$searchParams));
返回数组('name'=>$name,'dates'=>$matches[0]);
}

您可以使用这个简单的函数,它将返回数组中的日期和字符串的其余部分:

功能条名称和日期($searchParams){
$pattern='~\d{2}/\d{2}/\d{4}';
preg_match_all($pattern、$searchParams、$matches);
$name=trim(preg_replace($pattern,,$searchParams));
返回数组('name'=>$name,'dates'=>$matches[0]);
}

preg_split allow第四个参数是:


preg_split allow第四个参数为:


preg_split allow第四个参数为:


preg_split allow第四个参数为:


您可以使用捕获组提取日期,然后提取紧跟其后的名称。很难写出一个完美的正则表达式来解释所有可能的日期,包括闰年。最好使用PHP进行验证:

$pieces = array();    
$searchParams = '12/12/1978 Bob Smithers';
if (preg_match('~(\d{2}/\d{2}/\d{4})\s+(.*)~', $searchParams, $matches)) {
    if (strtotime($matches[1])) {
        $pieces = array($matches[1], $matches[2]);
    }
}

print_r($pieces);
输出:

Array
(
    [0] => 12/12/1978
    [1] => Bob Smithers
)

您可以使用捕获组来提取日期,然后提取紧跟其后的名称。很难写出一个完美的正则表达式来解释所有可能的日期,包括闰年。最好使用PHP进行验证:

$pieces = array();    
$searchParams = '12/12/1978 Bob Smithers';
if (preg_match('~(\d{2}/\d{2}/\d{4})\s+(.*)~', $searchParams, $matches)) {
    if (strtotime($matches[1])) {
        $pieces = array($matches[1], $matches[2]);
    }
}

print_r($pieces);
输出:

Array
(
    [0] => 12/12/1978
    [1] => Bob Smithers
)

您可以使用捕获组来提取日期,然后提取紧跟其后的名称。很难写出一个完美的正则表达式来解释所有可能的日期,包括闰年。最好使用PHP进行验证:

$pieces = array();    
$searchParams = '12/12/1978 Bob Smithers';
if (preg_match('~(\d{2}/\d{2}/\d{4})\s+(.*)~', $searchParams, $matches)) {
    if (strtotime($matches[1])) {
        $pieces = array($matches[1], $matches[2]);
    }
}

print_r($pieces);
输出:

Array
(
    [0] => 12/12/1978
    [1] => Bob Smithers
)

您可以使用捕获组来提取日期,然后提取紧跟其后的名称。很难写出一个完美的正则表达式来解释所有可能的日期,包括闰年。最好使用PHP进行验证:

$pieces = array();    
$searchParams = '12/12/1978 Bob Smithers';
if (preg_match('~(\d{2}/\d{2}/\d{4})\s+(.*)~', $searchParams, $matches)) {
    if (strtotime($matches[1])) {
        $pieces = array($matches[1], $matches[2]);
    }
}

print_r($pieces);
输出:

Array
(
    [0] => 12/12/1978
    [1] => Bob Smithers
)

我能想到的最简单的解决方案是:

$str='12/12/1978鲍勃·史密斯';
$ar=array();
$regex=“(?:\d\d?[\/-]){2}\d{2,4}”;
preg_匹配(“/”$regex./”,$str,$ar);
数组推送($ar,preg\u replace(“/\s*”$regex.\s*/”,“”,$str));
var_dump($ar);

我能想到的最简单的解决方案是:

$str='12/12/1978鲍勃·史密斯';
$ar=array();
$regex=“(?:\d\d?[\/-]){2}\d{2,4}”;
preg_匹配(“/”$regex./”,$str,$ar);
数组推送($ar,preg\u replace(“/\s*”$regex.\s*/”,“”,$str));
var_dump($ar);

我能想到的最简单的解决方案是:

$str='12/12/1978鲍勃·史密斯';
$ar=array();
$regex=“(?:\d\d?[\/-]){2}\d{2,4}”;
preg_匹配(“/”$regex./”,$str,$ar);
数组推送($ar,preg\u replace(“/\s*”$regex.\s*/”,“”,$str));
var_dump($ar);

我能想到的最简单的解决方案是:

$str='12/12/1978鲍勃·史密斯';
$ar=array();
$regex=“(?:\d\d?[\/-]){2}\d{2,4}”;
preg_匹配(“/”$regex./”,$str,$ar);
数组推送($ar,preg\u replace(“/\s*”$regex.\s*/”,“”,$str));
var_dump($ar);

preg_split将使用regexp作为分隔符,在该分隔符上拆分字符串-即不会返回该字符串。请尝试使用preg_match_all获取日期,然后将其从原始字符串中删除(如果找到),preg_split将使用regexp作为分隔符,在分隔符上拆分字符串-即,它不会返回。请尝试使用preg_match_all获取日期,然后将其从原始字符串中删除(如果找到),preg_split将使用regexp作为分隔符,在分隔符上拆分字符串-即,它不会返回。请尝试使用preg_match_all获取日期,然后将其从原始字符串中删除(如果找到),preg_split将使用regexp作为分隔符,在分隔符上拆分字符串-即,它不会返回。尝试preg_match_all获取日期,如果找到,则将其从原始字符串中删除