使用preg_replace从create table动态删除int

时间:2013-11-28 06:49:52

标签: php preg-replace preg-match

如何在php中使用preg_replace函数动态删除int?

我有以下代码

CREATE TABLE vtiger_meter ( meterid int(11) DEFAULT NULL, meterno int(8) DEFAULT NULL, cdate date DEFAULT NULL, address varchar(255) DEFAULT NULL, customer varchar(100) DEFAULT NULL )

我想要以下代码

CREATE TABLE vtiger_meter ( meterid int DEFAULT NULL, meterno int DEFAULT NULL, cdate date DEFAULT NULL, address varchar(255) DEFAULT NULL, customer varchar(100) DEFAULT NULL )

我想要输出。在int之后必须有一个动态值我要删除那个。如何做到这一点?

我使用自定义函数爆炸,但我想在preg_replace中使用它。

4 个答案:

答案 0 :(得分:1)

$input = 'CREATE TABLE vtiger_meter (
            meterid int(11) DEFAULT NULL,
            meterno int(8) DEFAULT NULL,
            cdate date DEFAULT NULL,
            address varchar(255) DEFAULT NULL,
            customer varchar(100) DEFAULT NULL )';
$output = preg_replace('/int\s*\(\s*\d+\s*\)/', 'int ', $input);
echo $output;

答案 1 :(得分:1)

使用preg_replace,将int\(\d+\)\s*替换为int

$statement = preg_replace('/int\(\d+\)\s*/', 'int ', $statement);

注意'int'之后的空格。

答案 2 :(得分:0)

您可以尝试这样

$str = "CREATE TABLE vtiger_meter ( meterid int(11) DEFAULT NULL, meterno int(25534) DEFAULT NULL, cdate date DEFAULT NULL, address varchar(255) DEFAULT NULL, customer varchar(100) DEFAULT NULL )";
preg_replace("/ int\s*\(\s*([0-9]+)\s*\\)/", " int ", $str);
print $str;

输出

喜欢

CREATE TABLE vtiger_meter ( meterid int DEFAULT NULL, meterno int DEFAULT NULL, cdate date DEFAULT NULL, address varchar(255) DEFAULT NULL, customer varchar(100) DEFAULT NULL ) 

有关详细信息,请参阅此链接http://us2.php.net/preg_replace

答案 3 :(得分:0)

如果您只想替换int而不是tinyintlongint以及所有这些,您可以(使用字边界\b进行更换案例不敏感的)

$str = preg_replace('/\bint\(\d+\)/i', 'int', $str);