conditional preg_replace for optional backreference replacement

Asenar

I have a regex to reformat a date from "dd/mm/yyyy HH:ii:ss" to YYYY-MM-DD HH:II:SS which is fine, but I would also use the same for validating date only (when no hours are provided).

Maybe there is a way to give default value to the replacement but I didn't found it.

$regex = '#^(\d{2})/(\d{2})/(\d{4})(?: (\d{2}):(\d{2})(?::(\d{2}))?)?$#';
$replace = '$3-$2-$1 $4:$5:00';


$str = '07/11/2013 20:30';
$val = preg_replace($regex, $replace, $str);
echo $val;  // "2013-11-07 20:30:00"

$str = '07/11/2013';
$val = preg_replace($regex, $replace, $str);
echo $val; // "2013-11-07 ::00"
p.s.w.g

You can use preg_replace_callback and provide a custom callback method to perform the replacement. Inside you're callback, you can apply your default values:

$regex = '#^(\d{2})/(\d{2})/(\d{4})(?: (\d{2}):(\d{2})(?::(\d{2}))?)?$#';
$replace = function ($m) {
    if (!$m[4]) $m[4] = '00';
    if (!$m[5]) $m[5] = '00';
    return "$m[3]-$m[2]-$m[1] $m[4]:$m[5]:00";
};

$str = '07/11/2013 20:30';
$val = preg_replace_callback($regex, $replace, $str);
echo $val;  // "2013-11-07 20:30:00"

$str = '07/11/2013';
$val = preg_replace_callback($regex, $replace, $str);
echo $val;  // "2013-11-07 00:00:00"

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

From Dev

php conditional preg_replace

From Dev

Sed dynamic backreference replacement

From Dev

preg_replace use matched pattern in replacement

From Dev

Get dynamic replacement with preg_replace()

From Dev

How to quote replacement in preg_replace?

From Dev

Get dynamic replacement with preg_replace()

From Dev

preg_replace to preg_replace_callback with an array as replacement

From Dev

preg_replace to preg_replace_callback with an array as replacement

From Dev

Nginx Regex and optional backreference

From Dev

Conditional Operator With Preg_Replace PHP

From Dev

Pattern backreference to an optional capturing subexpression

From Dev

PHP keyword replacement using preg_replace and a FOR loop

From Dev

PHP preg_replace: Case insensitive match with case sensitive replacement

From Dev

preg_replace The /e modifier is deprecated using arrays as pattern and replacement

From Dev

preg_replace() with variable in replacement string eats up first character

From Dev

preg_replace pattern and replacement for image tag of mediawiki markup

From Dev

how to use preg_replace with dimensional pattern and replacement in php?

From Dev

How can I get this preg_replace replacement?

From Dev

how to use preg_replace with dimensional pattern and replacement in php?

From Dev

proper replacement for Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback?

From Dev

Can one use backreference as replacement value in sed?

From Dev

Laravel 5.1 - preg_replace(): Parameter mismatch, pattern is a string while replacement is an array

From Dev

Laravel 4 Database insert Error - preg_replace(): Parameter mismatch, pattern is a string while replacement is an array

From Dev

Laravel: preg_replace(): Parameter mismatch, pattern is a string while replacement is an array

From Dev

laravel 5.2: ErrorException: preg_replace(): Parameter mismatch, pattern is a string while replacement is an array

From Dev

php preg_replace with empty string replacement character does not work on non printable characters

From Dev

Conditional replacement in R

From Dev

Conditional replacement VBA in Word

From Dev

Conditional replacement in R

Related Related

  1. 1

    php conditional preg_replace

  2. 2

    Sed dynamic backreference replacement

  3. 3

    preg_replace use matched pattern in replacement

  4. 4

    Get dynamic replacement with preg_replace()

  5. 5

    How to quote replacement in preg_replace?

  6. 6

    Get dynamic replacement with preg_replace()

  7. 7

    preg_replace to preg_replace_callback with an array as replacement

  8. 8

    preg_replace to preg_replace_callback with an array as replacement

  9. 9

    Nginx Regex and optional backreference

  10. 10

    Conditional Operator With Preg_Replace PHP

  11. 11

    Pattern backreference to an optional capturing subexpression

  12. 12

    PHP keyword replacement using preg_replace and a FOR loop

  13. 13

    PHP preg_replace: Case insensitive match with case sensitive replacement

  14. 14

    preg_replace The /e modifier is deprecated using arrays as pattern and replacement

  15. 15

    preg_replace() with variable in replacement string eats up first character

  16. 16

    preg_replace pattern and replacement for image tag of mediawiki markup

  17. 17

    how to use preg_replace with dimensional pattern and replacement in php?

  18. 18

    How can I get this preg_replace replacement?

  19. 19

    how to use preg_replace with dimensional pattern and replacement in php?

  20. 20

    proper replacement for Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback?

  21. 21

    Can one use backreference as replacement value in sed?

  22. 22

    Laravel 5.1 - preg_replace(): Parameter mismatch, pattern is a string while replacement is an array

  23. 23

    Laravel 4 Database insert Error - preg_replace(): Parameter mismatch, pattern is a string while replacement is an array

  24. 24

    Laravel: preg_replace(): Parameter mismatch, pattern is a string while replacement is an array

  25. 25

    laravel 5.2: ErrorException: preg_replace(): Parameter mismatch, pattern is a string while replacement is an array

  26. 26

    php preg_replace with empty string replacement character does not work on non printable characters

  27. 27

    Conditional replacement in R

  28. 28

    Conditional replacement VBA in Word

  29. 29

    Conditional replacement in R

HotTag

Archive