Ich habe eine Zeichenfolge, die von MySQL-Abfrage erstellen ist:PHP rekursive Funktion Ausgabe Teil der Zeichenfolge zu holen
$str = "CREATE TABLE `custom_groupmanager` (
`groupid` int(11) NOT NULL AUTO_INCREMENT,
`groupname` varchar(100) DEFAULT NULL,
`owner` int(4) DEFAULT NULL,
`created` datetime DEFAULT NULL,
`modified` datetime DEFAULT NULL,
`active` int(1) DEFAULT NULL,
`pid` int(4) DEFAULT NULL,
`col1` int(5) DEFAULT NULL,
`col2` int(5) DEFAULT NULL,
PRIMARY KEY (`groupid`),
UNIQUE KEY `groupname` (`groupname`,`pid`),
UNIQUE KEY `somaname` (`col1`,`col2`)
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=latin1";
Ich brauche die eindeutigen Schlüssel in Array wie diese
Array
(
[0] => UNIQUE KEY `groupname` (`groupname`,`pid`)
[1] => UNIQUE KEY `somaname` (`col1`,`col2`)
)
So bekomme ich m eine rekursive Funktion versucht, aber es scheint fail.This ist mein Code
$tmparr = array();
$newarray = filterunique($str,$tmparr);
function filterunique($str,$tmparr){
if(strpos($str, "UNIQUE KEY") != FALSE){
$unitmp = strstr($str,"UNIQUE KEY");
$tmpstr = strstr($unitmp,")",TRUE)."),\n";
array_push($tmparr,strstr($unitmp,")",TRUE).")");
print_r($tmparr);
$str=str_replace($tmpstr, "", $str);
filterunique($str,$tmparr);
}else{
return $tmparr;
}
}
print_r($newarray);
Bitte helfen sie mir zu verstehen, wo ich falsch mache.
Warum nicht regex - https://regex101.com/r/dJW7An/1? – splash58
Sie könnten einfach reguläre Ausdrücke mit dieser Art von Aufgabe verwenden, Beispiel oben^ – Ghost
Regex ist in Ordnung. Aber ich versuche herauszufinden, was ich falsch gemacht – Francis