替换字符串PHP REGEX中的模式

时间:2016-06-16 12:23:44

标签: php mysql sql

我有一个用于INSERT命令的字符串。当值为空时,INSERT字符串中的相应位点将生成为:

VALUES ('', 'VALUE', '', '', '', 0, 1, '')

我想替换''使用NULL,因此数据库不再会因将varchar投射到numeric类型而引发错误:

VALUES (null, 'VALUE', null, null, null, 0, 1, null)

我尝试使用:

$build_values_m = str_replace($build_values_m, ", '', ", ", null, ");

然而,这会夺走我的大部分INSERT字符串,并且不能用NULL替换空值。

我该怎么做?

2 个答案:

答案 0 :(得分:1)

看起来您想要将"''"替换为"NULL"并且您试图这样做而不是查看手册:http://php.net/manual/en/function.str-replace.php

如果您查看手册,您会看到参数的顺序是Search,Replace,OriginalString。你正试图做OriginalString,搜索,替换 - 这显然不起作用。所以,尝试按正确的顺序进行:

$build_values_m = str_replace("''","NULL",$build_values_m);

然后,"''"的所有实例都将替换为字符串"NULL"

答案 1 :(得分:1)

您可以使用正则表达式替换函数preg_replace()执行替换,如下所示:

$string = "VALUES ('','','VALUE HERE','',)";
$pattern = array();
$pattern[0] = '/\'\'/g'; // Match : ''
$replacement = array();
$replacement[0] = 'NULL';

preg_replace($pattern, $replacement, $string);