Удалить пробелы в строке, исключая их в указанных между указанными символами - PullRequest
0 голосов
/ 21 декабря 2011

У меня есть строка:

Some string, "it's a nice string". I like it. "some other text"

Я хочу удалить пробелы, исключая их между ними: "

Somestring,"it's a nice string".Ilikeit."some other text"

Как мне достичь цели?

Ответы [ 3 ]

1 голос
/ 21 декабря 2011

Вы можете использовать регулярные выражения, или вы можете обмануть и использовать explode():

$text_before = 'Some string, "it\'s a nice string". I like it. "some other text"';
$text_after = array();
$text_quotes = explode('"', $text_before);
for ($i = 0, $max = count($text_quotes); $i < $max; $i++) {
    if (($i % 2) == 1) {
        $text_after[] = $text_quotes[$i];
    } else {
        $text_after[] = str_replace(' ', '', $text_quotes[$i]);
    }
}
echo implode('"', $text_after);
0 голосов
/ 21 декабря 2011

Я не очень хорошо разбираюсь в регулярных выражениях, так что это решение не использует ничего. Что бы я сделал:

$str = 'Some string, "it\'s a nice string". I like it. "some other text"';
$pieces = explode('"', $str);
for($i = 0; $i < count($pieces); $i += 2){ // Every other chunk is quoted
    $pieces[$i] = str_replace(' ', '', $pieces[$i]);
}
$str = implode('"', $pieces);

Если строка начинается с двойных кавычек, php сделает первый элемент массива $pieces пустым, поэтому это все равно должно работать.

0 голосов
/ 21 декабря 2011

Вы можете достичь этого, используя функцию php str_replace. Пожалуйста, проверьте http://php.net/manual/en/function.str-replace.php

...