一致した結果に基づいて1つのステップで置き換えます

クレイグ

文字列があり、各YYYY-MM-DD HH:MM:SS日時文字列をUNIXタイムスタンプに置き換えたい

私は、日時文字列がどこで発生するかを特定することに成功しました。

$my_string = 'Hello world 2014-12-25 10:00:00 and foo 2014-09-10 05:00:00, bar';

preg_match_all('((?:2|1)\\d{3}(?:-|\\/)(?:(?:0[1-9])|(?:1[0-2]))(?:-|\\/)(?:(?:0[1-9])|(?:[1-2][0-9])|(?:3[0-1]))(?:T|\\s)(?:(?:[0-1][0-9])|(?:2[0-3])):(?:[0-5][0-9]):(?:[0-5][0-9]))',$my_string,$my_matches, PREG_OFFSET_CAPTURE);

print_r($my_matches);

これにより、一致した日時文字列の値とその場所を含む配列の配列が出力されます。

Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [0] => 2014-12-25 10:00:00
                    [1] => 12
                )

            [1] => Array
                (
                    [0] => 2014-09-10 05:00:00
                    [1] => 40
                )

        )

)

この時点から、配列をループしてに基づいて置換する予定でしたがstr_replace()strtotime()次のようなことができれば、実行時間が短くなると思います。

$my_string = preg_replace(
    '((?:2|1)\\d{3}(?:-|\\/)(?:(?:0[1-9])|(?:1[0-2]))(?:-|\\/)(?:(?:0[1-9])|(?:[1-2][0-9])|(?:3[0-1]))(?:T|\\s)(?:(?:[0-1][0-9])|(?:2[0-3])):(?:[0-5][0-9]):(?:[0-5][0-9]))',
    strtotime($VALUE_OF_MATCHED_STRING),
    $my_string
);

そのため、一致したすべての見つかったインスタンスは、単純にstrtotime()フォーマットされます。

この結果を得る正しい方法は何ですか?ループは最も実行可能な方法ですか?

アマル・ムラリ

preg_replace_callback()代わりに使用してくださいこれにより、コールバック関数を使用して検索と置換を実行できます。

echo preg_replace_callback($pattern, function ($m) {
    return strtotime($m[0]);
}, $my_string);

$m一致したアイテムを含む配列です。$m[0]日付文字列が含まれます。

上記のコードは次のように出力します。

Hello world 1419501600 and foo 1410325200, bar

デモ

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Oracle、一致した式に基づいて REGEXP_REPLACE の文字列を置き換えます

分類Dev

別の列に条件付きで一致するベクトルに基づいて、1つの列の値を置き換えます

分類Dev

美しいスープfind_all()は、タグとクラスに基づく完全一致基準を満たす結果に加えて、いくつかの結果を返します

分類Dev

Rで、隣接する列の文字の一致に基づいて、値をNAに置き換えます

分類Dev

Rでループを作成し、data.frame Bの列値の一致したサブセットに基づいて、data.frame Aの値を検索して置き換えますか?

分類Dev

Bash:一致する部分文字列に基づいて1つの列の文字列全体を置き換えます

分類Dev

正規表現を使用して取得した一致に基づいて、別の列の列の値を置き換えます(Python Pandas)

分類Dev

隣接する列の一致する値に基づいて、列の値を置き換えます

分類Dev

正規表現は、パターンに基づいてすべての一致を置き換えます

分類Dev

xsltは、インポートされたノードセットからの一致に基づいて値を置き換えます

分類Dev

REGEXの一致に基づいて値を別の列に置き換えますrtidy

分類Dev

Rは、列間の一致に基づいて列の値を置き換えます

分類Dev

指定された配列セットに基づいて結果値を動的に置き換えます

分類Dev

sedを使用して、一致するテキストの最初のブロックを置き換えたい

分類Dev

Pythonで、一致する部分に基づいてパスの一部を置き換えるにはどうすればよいですか?

分類Dev

一致したすべてのテキストを動的グループに置き換える方法は?

分類Dev

一致した文字列内の文字のグループに基づいて文字列の一部を置き換える方法は?

分類Dev

列名と一致するように別の列の値に基づいて欠落している値を置き換える方法はありますか?

分類Dev

行の一致に基づいて新しい列を作成し、それを新しい用語に置き換えます

分類Dev

関数の結果に基づいて列の値を結果で置き換えることなく、列に関数を適用します

分類Dev

一致#1の後に見つかった行の一致したテキスト(一致#2)を置き換える方法

分類Dev

一致に基づいて別の文字列を別のファイル内の文字列のリストに置き換えます

分類Dev

単語内の2つの等しい文字を一致させ、1つのREに置き換えます

分類Dev

Rでdata.tableを結合した後、一致しない行のNA値を置き換えます

分類Dev

条件に基づいて1つの列の値を置き換えます

分類Dev

条件に基づいて1つの列の値を置き換えます

分類Dev

sedを使用して変数の一致に基づいて行を置き換える方法

分類Dev

一致する文字列に基づいて、ファイル内の値を別のファイルの値に置き換えます(それ以外の場合:スキップ)

分類Dev

ここでの結果の一致は、map_errと「?」に置き換えることができます。

Related 関連記事

  1. 1

    Oracle、一致した式に基づいて REGEXP_REPLACE の文字列を置き換えます

  2. 2

    別の列に条件付きで一致するベクトルに基づいて、1つの列の値を置き換えます

  3. 3

    美しいスープfind_all()は、タグとクラスに基づく完全一致基準を満たす結果に加えて、いくつかの結果を返します

  4. 4

    Rで、隣接する列の文字の一致に基づいて、値をNAに置き換えます

  5. 5

    Rでループを作成し、data.frame Bの列値の一致したサブセットに基づいて、data.frame Aの値を検索して置き換えますか?

  6. 6

    Bash:一致する部分文字列に基づいて1つの列の文字列全体を置き換えます

  7. 7

    正規表現を使用して取得した一致に基づいて、別の列の列の値を置き換えます(Python Pandas)

  8. 8

    隣接する列の一致する値に基づいて、列の値を置き換えます

  9. 9

    正規表現は、パターンに基づいてすべての一致を置き換えます

  10. 10

    xsltは、インポートされたノードセットからの一致に基づいて値を置き換えます

  11. 11

    REGEXの一致に基づいて値を別の列に置き換えますrtidy

  12. 12

    Rは、列間の一致に基づいて列の値を置き換えます

  13. 13

    指定された配列セットに基づいて結果値を動的に置き換えます

  14. 14

    sedを使用して、一致するテキストの最初のブロックを置き換えたい

  15. 15

    Pythonで、一致する部分に基づいてパスの一部を置き換えるにはどうすればよいですか?

  16. 16

    一致したすべてのテキストを動的グループに置き換える方法は?

  17. 17

    一致した文字列内の文字のグループに基づいて文字列の一部を置き換える方法は?

  18. 18

    列名と一致するように別の列の値に基づいて欠落している値を置き換える方法はありますか?

  19. 19

    行の一致に基づいて新しい列を作成し、それを新しい用語に置き換えます

  20. 20

    関数の結果に基づいて列の値を結果で置き換えることなく、列に関数を適用します

  21. 21

    一致#1の後に見つかった行の一致したテキスト(一致#2)を置き換える方法

  22. 22

    一致に基づいて別の文字列を別のファイル内の文字列のリストに置き換えます

  23. 23

    単語内の2つの等しい文字を一致させ、1つのREに置き換えます

  24. 24

    Rでdata.tableを結合した後、一致しない行のNA値を置き換えます

  25. 25

    条件に基づいて1つの列の値を置き換えます

  26. 26

    条件に基づいて1つの列の値を置き換えます

  27. 27

    sedを使用して変数の一致に基づいて行を置き換える方法

  28. 28

    一致する文字列に基づいて、ファイル内の値を別のファイルの値に置き換えます(それ以外の場合:スキップ)

  29. 29

    ここでの結果の一致は、map_errと「?」に置き換えることができます。

ホットタグ

アーカイブ