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'>=></font> <small>string</small>
<font color='#cc0000'>'bob smithers '</font>
<i>(length=13)</i>
1 <font color='#888a85'>=></font> <small>string</small>
<font color='#cc0000'>''</font>
<i>(length=0)</i>
排列
(尺寸=2)
0=字符串
“鲍勃·史密斯”
(长度=13)
1=字符串
''
(长度=0)
我需要的是将字符串分成两部分-一部分包含日期,另一部分包含名称A
regex
免费解决方案[适用于这两种情况]
Aregex
免费解决方案[适用于两种情况]
Aregex
免费解决方案[适用于两种情况]
Aregex
免费解决方案[适用于两种情况]
您可以使用这个简单的函数,它将返回数组中的日期和字符串的其余部分:
功能条名称和日期($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获取日期,如果找到,则将其从原始字符串中删除