$re = '/(?: ([^";\r\n]*) #1 value without quotes or
| \x20* ("(?:[^"]+|"")*") \x20* #2 value inside quotes
)
(?: (;) #3 values delimiter or
| [\r\n]+ # rows delimiter
)/sx';
$str = '501 ; 8300000000000 ; ";Автономный ;"";округ""
""Ненецкий"";";test1
751;8600800000000; " Автономный округ ""Ханты-Мансийский"", Район Советский" ;
1755;8700300000000;Автономный округ Чукотский, Район Билибинский
1725;7501900000000;Край Забайкальский, Район Петровск-Забайкальский
;;
711;2302100000000;Край Краснодарский, Район Лабинский
729;2401600000000;Край Красноярский, Район Иланский
765;2700700000000;Край Хабаровский, Район Вяземский';
$subst = "\1\2\x01\3\x02";
$result = preg_replace($re, $subst, $str);
echo "The result of the substitution is ".$result;
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for PHP, please visit: http://php.net/manual/en/ref.pcre.php