Как бы я убрал все пробелы между одинарными кавычками, пропуская экранированные кавычки в PHP? - PullRequest
0 голосов
/ 12 января 2010

Точно в соответствии с заголовком:

Как бы удалить все ненужные пробелы между одинарными кавычками, пропуская экранированные кавычки в PHP?

Я ищу быструю реализацию для предварительной подготовки к синтаксическому анализу. Я бы предпочел не использовать регулярные выражения, если это будет медленнее, чем простой цикл.

(двойные кавычки ниже только для отображения)

примеров будет:

ввод:

"    testing    '  this  is a     \'test\'  '     zzz     "

выход:

"testing '  this  is a     \'test\'  ' zzz"

Ответы [ 3 ]

1 голос
/ 12 января 2010
<?php

$parts = preg_split('/((?<!\\\\)|(?<=\\\\\\\\))\'/', trim($data));

foreach ($parts as $index => &$part) {
    if ($index % 2 == 0) {
        $part = preg_replace('/\s{2,}/', ' ', $part);
    }
}

echo join('\'', $parts);

Теперь дождемся гораздо более простого решения, которое я пропустил: p

0 голосов
/ 12 января 2010

Хорошо, время psuedocode:

var shouldtrim = true;
var escaped = false;
foreach char in string
    if char is whitespace and lastchar is whitespace and shouldtrim
        remove char from string

    if char is ' and not escaped
        toggle shouldtrim

    if char is \
        toggle escaped
    else
        escaped = false
0 голосов
/ 12 января 2010

Попробуйте это:

<?php
$str = "    testing    '  this  is a     \'test\'  '     zzz     ";

echo trim($str," ");

?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...