0

文字列があります(配列内):

$a = "account Tel48201389 user@whatever.net dated 2013-07-01 in JHB".

$b = "installation on 2013-08-11 in PE".

PHP のみを使用して、これらの各文字列から完全な日付を取得する必要があります。
pregmatch でワイルドカードを使用することは可能ですか?
私は試した:

preg_match('/(?P<'name'>\w+): (?P'<'digit-digit-digit'>'\d+)/', $str, $matches); 

しかし、それはエラーを出します。
最終結果は次のようになります:$a = 2013-07-01" そして $b = "2013-08-11" ありがとう!

4

4 に答える 4

1

preg_match_all を使用して、文字列内のすべての日付パターンを取得できます。すべての文字列の一致は配列に保存され、関数に引数として渡されます。

この例では、すべてのパターン dddd-dd-dd を配列 $matches に保存します。

$string = "account Tel48201389 user@whatever.net dated 2013-07-01 in JHB installation on 2013-08-11 in PE";

if (preg_match_all("@\d{4}-\d{2}-\d{2}@", $string, $matches)) {
   print_r($matches);
}

幸運を!

于 2013-06-24T22:37:07.377 に答える
0

あなたはこれを行うことができます。

<?php
$b = 'installation on 2013-08-11 in PE';
preg_match('#([0-9]{4}-[0-9]{2}-[0-9]{2})#', $b, $matches);
if (count($matches) == 1) {
    $b = $matches[0];
    echo $b; # 2013-08-11
}
?>
于 2013-06-24T22:37:38.307 に答える
0

これを試して....

 $a = "account Tel48201389 user@whatever.net dated 2013-07-01 in JHB";

 preg_match("/(?P<year>[0-9]{4})-(?P<month>[0-9]{2})-(?P<day>[0-9]{2})/", $a, $matches);

 if($matches){
 echo $matches[0];// For the complete string
 echo $matches['year'];//for just the year etc
 }
于 2013-06-24T22:38:00.997 に答える
0
 $a = "account Tel48201389 user@whatever.net dated 2013-07-01 in JHB";

    if(preg_match('%[0-9]{4}+\-+[0-9]{2}+\-[0-9]{2}%',$a,$match)) {

    print_r($match);    

    }

両方の文字列で機能するはずです-日付が常にこの形式になる場合。

于 2013-06-24T22:36:17.720 に答える