$re = '/\G #anclado a \A o fin de última coincidencia
( #Grupo 1: Caracteres previos
[^\h\\\\\'\v]*+ # Todo menos caracteres especiales
(?: # Repetir infinitas veces
(?: # Alternativas:
(?!^)\h # a. espacio simple que no
(?!\h|$) # está al ppio ni al final
| \v # b. línea nueva
| \\\\. # c. cualquier escape
| \'[^\'\\\\]*+ # d. comillas
(?:(?:\'\'|\\\\.)[^\'\\\\]*)*
\' #
) #
[^\h\\\\\'\v]*+ # Seguido de más texto no especial
)* #
) #(fin G1)
(?: #Espacios:
^\h+ # a. al ppio de la línea
| \h+(\h|$) # b. en el medio o al final
) #/mx';
$str = ' select * , fooo ,
a,
b,
c
from
table
where a = \'a b\'
or campo = \'borra los espacios \\\'no?\'
and c = 1;';
$subst = "$1$2";
$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