Марти, воскрешает этот вопрос, потому что у него было простое решение, которое позволяет сделать замену за один раз - не нужно взрываться.(Нашел свой вопрос во время исследования общего вопроса о как исключить шаблоны в регулярном выражении .)
Вот наш простой регулярное выражение:
"[^"]*"(*SKIP)(*F)|\s+
Левая сторонаиз чередования совпадений завершено "quoted strings"
, а затем намеренно завершается неудачей.Правая сторона соответствует пробельным символам, и мы знаем, что они являются правыми пробельными символами, поскольку они не совпадают с выражением слева.
Этот код показывает, как использовать регулярное выражение (см. Результаты в нижней части онлайн-демонстрация ):
<?php
$regex = '~"[^"]*"(*SKIP)(*F)|\s+~';
$subject = 'hola hola "pepsi cola" yay';
$replaced = preg_replace($regex,"",$subject);
echo $replaced."<br />\n";
?>
Ссылка
Как сопоставить (или заменить) шаблон, кроме случаев s1,s2, s3 ...