删除字符串中的空格,不包括指定字符之间指定的空格

时间:2011-12-21 11:52:16

标签: php preg-match php-5.3 expression

我有一个字符串:

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

我想删除空格,不包括在“:

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

我如何才能实现目标?

3 个答案:

答案 0 :(得分:1)

您可以使用正则表达式,也可以欺骗并使用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);

答案 1 :(得分:0)

您可以使用php str_replace函数来实现它。请检查http://php.net/manual/en/function.str-replace.php

答案 2 :(得分:0)

我对正则表达式不好,所以这个解决方案不使用任何正则表达式。我会做什么:

$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数组的第一个元素为空,所以这仍然有效。