'preg_replace vs ereg_replace vs str_replace On This Particular Case

Using PHP, I want to generate custom MySQL dump file (due to cannot use exec and a few other reasons).

I found these 2 similar solutions:

  1. https://www.kvcodes.com/2017/10/php-create-mysql-backup
  2. https://davidwalsh.name/backup-mysql-database-php

The different part that I want to highlight is:

Link 1:

$row[$j] = preg_replace("#\n#", "\\n", $row[$j])

Link 2:

$row[$j] = ereg_replace("\n","\\n",$row[$j])

I know that ereg_replace() is deprecated. I also assume that there's typo in solution Link 1 which should be:

$row[$j] = preg_replace("\n", "\\n", $row[$j])

But then in my solution, I simply use:

$row[$j] = str_replace("\n", "\\n", $row[$j])

How could I be wrong by using str_replace()? I've tested dumping several complex data (json, coding, html syntax) and all seems ok. Could there some special case that str_replace() would handle differently than preg_replace()?



Solution 1:[1]

From the manual

If you don't need fancy replacing rules (like regular expressions), you should use this function instead of preg_replace().

If str_replace() does what you need, then use it. It will be faster than preg_replace().

The simple string replacement is not as intelligent as a regular expression, so test it thoroughly for your application.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Tangentially Perpendicular