PHP preg_match_all

fi**en32

Lieutenant
Registriert
Mai 2007
Beiträge
967
moinsen jungs und mädels.

ich hab da nen kleines problem. und zwar möchte ich eine sql-datei auslesen die dann mit anderer tabellenstruktur wieder in eine datenbank soll.
ich weiß wieviele und welche tabellen exportiert werden...


die sql sieht etwa so aus: (beschränkt auf die wichtigen zeilen ;))
Code:
INSERT INTO `tab1` VALUES (text1),(text2);
UNLOCK TABLES;
INSERT INTO `tab2` VALUES (text3),(text4);
UNLOCK TABLES;
INSERT INTO `tab3` VALUES (text5),(text6),(text7);
UNLOCK TABLES;

Ich möchte nun jeweils den teil zwischen "VALUES" und "UNLOCK TABLES;" auslesen.
also :
feld[0]='(text1),(text2);';
feld[1]='(text3),(text4);';
feld[2]='(text5),(text6),(text7);';


mein php-code: funzt leider nicht so ganz
PHP:
$datei="sql.sql"; // >> ÄNDERN!

$dateizeiger=fopen($datei,"r");
while(!feof($dateizeiger))
{
	$sql_datei=$sql_datei.fgets($dateizeiger);
}
fclose($dateizeiger); 
							   
preg_match_all('#VALUES (.*)\nUNLOCK TABLES;#siU',$sql_datei,  $ausgabe_temp, PREG_PATTERN_ORDER);
	
	unset($feld);
	for($i=0;$i<count($ausgabe_temp);$i++)
	{
		$feld[] = $ausgabe_temp[1][$i];
	}
echo $feld[0];
echo $feld[1];
echo $feld[2];

---------------------------------------------------------------------------------------------------------------------------------------
EDIT:
teilweißer erfolg, aber nich ganz so wie gewollt. hat einer ne idee?
jetzt wird mir alles ausgelesen, was zwischen "VALUES " und ");" steht, problem is aber wenn ein text ");" beinhaltet, wirds nichts. deshalb wollt ich auch den ganzen teil zwischen "VALUE" und "UNLOCK TABLES;" ! jemand ne idee wie ich das anstellen koennte?

PHP:
$datei="sql.sql"; // >> ÄNDERN!

$dateizeiger=fopen($datei,"r");
while(!feof($dateizeiger))
{
	$sql_datei=$sql_datei.fgets($dateizeiger);
}
fclose($dateizeiger); 
							   
preg_match_all('#VALUES ((.*));#siU',$sql_datei,  $ausgabe_temp, PREG_PATTERN_ORDER);
	
	unset($feld);
	for($i=0;$i<count($ausgabe_temp);$i++)
	{
		$feld[] = $ausgabe_temp[1][$i];
	}
echo $feld[0];
echo $feld[1];
echo $feld[2];
 
Zuletzt bearbeitet:
Zurück
Oben