preg_replace vs ereg_replace vs str_replace 在这个特殊情况下

preg_replace vs ereg_replace vs str_replace On This Particular Case

使用 PHP,我想生成自定义 MySQL 转储文件(由于无法使用 exec 和其他一些原因)。

我找到了这 2 个相似的解决方案:

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

我要强调的不同部分是:

Link 1:

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

Link 2:

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

我知道 ereg_replace() 已被弃用。我还假设解决方案 Link 1 中存在错字,应该是:

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

但是在我的解决方案中,我只是使用:

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

我怎么会使用 str_replace()? 出错呢?我已经测试过转储几个复杂的数据(json、编码、html 语法),一切似乎都正常。 str_replace() 会不会有一些特殊情况与 preg_replace() 的处理方式不同?

来自the manual

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

如果str_replace()满足您的需求,就使用它。它会比 preg_replace().

简单的字符串替换不如正则表达式智能,因此请针对您的应用程序对其进行全面测试。