<?php 
$sql  =  "BEGIN;INSERT INTO TABLE_A (a, b, c) VALUES('42', '12', '\'ab\'c; DEF');INSERT INTO TABLE_B (d, e, f) VALUES('42', '43', 'XY\'s Z ;uvw');COMMIT;" ; 
$splits  =  preg_split ( '~\([^)]*\)(*SKIP)(*F)|;~' ,  $sql ) ; echo  "Option 1<br />" ; 
echo  "<br />Option 2<br />" ; 
$splits  =  preg_split ( '~\([^)]*\)(*SKIP)(*F)|(?<=;)(?![ ]*$)~' ,  $sql ) ;  
 
PD9waHAKJHNxbCA9ICJCRUdJTjtJTlNFUlQgSU5UTyBUQUJMRV9BIChhLCBiLCBjKSBWQUxVRVMoJzQyJywgJzEyJywgJ1wnYWJcJ2M7IERFRicpO0lOU0VSVCBJTlRPIFRBQkxFX0IgKGQsIGUsIGYpIFZBTFVFUygnNDInLCAnNDMnLCAnWFlcJ3MgWiA7dXZ3Jyk7Q09NTUlUOyI7CiRzcGxpdHMgPSBwcmVnX3NwbGl0KCd+XChbXildKlwpKCpTS0lQKSgqRil8O34nLCAkc3FsKTsKZWNobyAiT3B0aW9uIDE8YnIgLz4iOwpwcmludF9yKCRzcGxpdHMpOwplY2hvICI8YnIgLz5PcHRpb24gMjxiciAvPiI7CiRzcGxpdHMgPSBwcmVnX3NwbGl0KCd+XChbXildKlwpKCpTS0lQKSgqRil8KD88PTspKD8hWyBdKiQpficsICRzcWwpOwpwcmludF9yKCRzcGxpdHMpOwoK
				
				 
			
				
			
			
				
	
		
		
		
		 
	
		Option 1<br />Array
(
    [0] => BEGIN
    [1] => INSERT INTO TABLE_A (a, b, c) VALUES('42', '12', '\'ab\'c; DEF')
    [2] => INSERT INTO TABLE_B (d, e, f) VALUES('42', '43', 'XY\'s Z ;uvw')
    [3] => COMMIT
    [4] => 
)
<br />Option 2<br />Array
(
    [0] => BEGIN;
    [1] => INSERT INTO TABLE_A (a, b, c) VALUES('42', '12', '\'ab\'c; DEF');
    [2] => INSERT INTO TABLE_B (d, e, f) VALUES('42', '43', 'XY\'s Z ;uvw');
    [3] => COMMIT;
)