Php 在这种特殊情况下,preg_替换vs ereg_替换vs str_替换

Php 在这种特殊情况下,preg_替换vs ereg_替换vs str_替换,php,mysql,escaping,mysql-real-escape-string,Php,Mysql,Escaping,Mysql Real Escape String,使用PHP,我想生成自定义MySQL转储文件(由于无法使用exec和其他一些原因)。所以我找到了两个类似的解决方案: 我想强调的不同部分是: 链接1: $row[$j]=preg\u replace(“\n\n”、“\\n”、$row[$j]) 链接2: $row[$j]=ereg\u replace(“\n”、“\\n”、$row[$j]) 我知道ereg_replace()被贬值了。我还假设解决方案链接1中存在打字错误,应该是: $row[$j]=preg\u replace(“\n

使用PHP,我想生成自定义MySQL转储文件(由于无法使用exec和其他一些原因)。所以我找到了两个类似的解决方案:


  • 我想强调的不同部分是:

    链接1:
    $row[$j]=preg\u replace(“\n\n”、“\\n”、$row[$j])

    链接2:
    $row[$j]=ereg\u replace(“\n”、“\\n”、$row[$j])


    我知道ereg_replace()被贬值了。我还假设解决方案链接1中存在打字错误,应该是:

    $row[$j]=preg\u replace(“\n”、“\\n”、$row[$j])

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

    $row[$j]=str\u replace(“\n”、“\\n”、$row[$j])


    所以我的问题是,使用str_replace()我怎么会错呢?我已经测试了转储一些复杂数据(json、编码、html语法),似乎一切都正常。str_replace()是否会与preg_replace()处理不同的特殊情况


    结论:

    根据这里的所有反馈,我更改了类似于Link 1的解决方案,因为它跨平台更加防弹。


    如果不需要替换规则(如正则表达式),则应使用此函数而不是preg_replace()

    如果
    str\u replace()。它将比
    preg\u replace()
    更快


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

    链接1中没有输入错误。请看手册,您需要分隔符
    \v
    在正则表达式中对于任何新行字符都可能是最好的。我在大多数项目中都使用str_replace()。(完全没有问题)
    ereg_replace()
    已在PHP7中删除。如果您仍在使用一个PHP版本,那么您应该做的第一件事就是将其升级到PHP8@user3783243,而不是拼写错误意味着他想删除所有评论?但是不应该是
    “#*。#”
    ?不,这是用转义新行字符替换所有新行字符。
    #
    是分隔符,不是正则表达式的一部分。这就是我担心的。以防我的测试不彻底。但是考虑到要替换的简单模式(\n),我可以坚持使用stru\u replace,对吗?或者通过使用正则表达式,它也可以满足不同平台的情况?任何
    \n
    都不是Windows中的新行。如果您需要转义每一行,而不考虑平台,则应使用正则表达式。@user3783243感谢您的澄清。因此,我将我的解决方案更改为
    $row[$j]=preg\u replace(“\n”、“\\n”、$row[$j])
    ,以便在任何情况下都安全platform@Coisox使用
    \v
    作为任何平台上的换行符。同样,尽管您需要分隔符。