2017-07-12 4 views
0

私は日付の束を持つ文書を持っており、常にタグでラップされ、常に特定の形式です。日付を新しい形式に変換する

$text = '...<dt>31 DEC 1793</dt>... ...<dt>14 JAN 1934</dt>...'; 

私は曜日を含めるには、このテキストを置換しようとしている:

$text = '...<dt>Tuesday, 31 DEC 1793</dt>... ...<dt>Sunday, 14 JAN 1934</dt>...'; 

は今、私はこれを達成するためにpreg_replaceを使用しようとしているが、それはちょうど私の現在を与えます日付。

$text = preg_replace('/<dt>(\d{1,2} [A-Z]{3} \d{4})<\/dt>/i', "<dt>".date('l', strtotime("$1")).", $1</dt>", $text); 

日付機能は、置き換えが発生するたびにではなく、1回だけ実行されるようです。どうすればこの仕事をすることができますか?

+1

'DATE_FORMATを()'は使用しないのはなぜ? –

答えて

2

あなたは、コールバックの内側にdatestrtotime機能を実行する必要があります。

$text = '...<dt>31 DEC 1793</dt>... ...<dt>14 JAN 1934</dt>...'; 
$text = preg_replace_callback(
    '/<dt>(\d{1,2} [A-Z]{3} \d{4})<\/dt>/i', 
    function ($matches) { 
     $date = $matches[1]; 
     return "<dt>".date('l', strtotime($date)).", ".$date."</dt>"; 
    }, 
    $text 
); 
// $text = '...<dt>Tuesday, 31 DEC 1793</dt>... ...<dt>Sunday, 14 JAN 1934</dt>...'; 
+0

これは完璧です、ありがとうございます! – GFL

関連する問題