Php 在这种特殊情况下,preg_替换vs ereg_替换vs str_替换
使用PHP,我想生成自定义MySQL转储文件(由于无法使用exec和其他一些原因)。所以我找到了两个类似的解决方案: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
我想强调的不同部分是: 链接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
作为任何平台上的换行符。同样,尽管您需要分隔符。