What is the difference between preg_replace and preg_replace_callback in PHP and when should each be used?

The main difference between preg_replace and preg_replace_callback in PHP is how the replacement is handled. preg_replace allows you to specify a replacement string or an array of replacement strings, while preg_replace_callback allows you to specify a callback function that dynamically generates the replacement based on the matched string. preg_replace is suitable for simple replacements where the replacement string is known beforehand, while preg_replace_callback is more flexible and can be used for complex replacements that require dynamic processing.

// Using preg_replace for simple replacements
$new_string = preg_replace('/pattern/', 'replacement', $original_string);

// Using preg_replace_callback for dynamic replacements
$new_string = preg_replace_callback('/pattern/', function($matches) {
    // Process $matches and return the replacement string
    return 'dynamic_replacement';
}, $original_string);