Задать вопрос
@Zimaell

Как сделать текст в кавычках по бокам без пробелов?

Кручу и выдумываю уже который час и никак не пойму как сделать следующее - есть тексты к примеру:
test "test" test test "test"
test " . test"test test "test "
test ". test " test test"test"
test".test"test test"test "

То есть кавычки как угодно могут стоять, но к конечном варианте они должны быть в фрмате test "test". test test "test", то есть текст в кавычках соприкасается по обоим сторонам, в тоже время кавычки по обе стороны не соприкасаются с текстом, если конечно после кавычек не идет знак препинания, подскажите как данное сделать более проще? (а то я тут уже на массив разбиваю и считаю кавычки когда левая а когда правая...)
  • Вопрос задан
  • 155 просмотров
Подписаться 1 Простой 4 комментария
Пригласить эксперта
Ответы на вопрос 3
The_Best
@The_Best
"Болтовня ничего не стоит. Покажите мне код"©Linus
Это подойдет?
string trim ( string $str [, string $character_mask = " \t\n\r\0\x0B" ] )
Эта функция возвращает строку str с удаленными из начала и конца строки пробелами. Если второй параметр не передан, trim() удаляет следующие символы:

" " (ASCII 32 (0x20)), обычный пробел.
"\t" (ASCII 9 (0x09)), символ табуляции.
"\n" (ASCII 10 (0x0A)), символ перевода строки.
"\r" (ASCII 13 (0x0D)), символ возврата каретки.
"\0" (ASCII 0 (0x00)), NUL-байт.
"\x0B" (ASCII 11 (0x0B)), вертикальная табуляция.

Источник
Ответ написан
@Arik
Знатные кишки, но вроде работает
preg_replace_callback('/(.{0,1})"(.*?)"(.{0,1})/uis', function ($matches) {
    $result = strlen($matches[1]) && $matches[1] != ' ' ? $matches[1] . ' ' : $matches[1];
    $result .= sprintf('"%s"', trim($matches[2]));
    $result .= strlen($matches[3]) && !preg_match("/[-.?!)(,: ]/uis", $matches[3]) ? ' ' . $matches[3] : $matches[3];
    return $result;
}, $str);
Ответ написан
Комментировать
v3shin
@v3shin
Веб-шаман
$str = 'какой то"текст " тест какой то "текст " тест какой то " текст " тест какой то " текст"тест какой то " текст".тест';
$str = preg_replace('/\s*"\s*(.*?)\s*"\s*/', ' "$1" ', $str);
$str = preg_replace('/" ([\.,])/', '"$1', $str);
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы