Обрезка пустого пространства - PullRequest
3 голосов
/ 19 июня 2009

В строке, содержащей кавычки, я всегда получаю лишние пробелы перед конечной кавычкой. Например

"это тест" (строка содержит кавычки)

Обратите внимание на пробел после теста , но до конечной кавычки . Как я мог избавиться от этого места?

Я пробовал rtrim, но он применяется только к символам в конце строки, очевидно, этот случай не в конце.

Есть какие-нибудь подсказки? Спасибо

Ответы [ 6 ]

3 голосов
/ 19 июня 2009

Вот еще один способ, который соответствует только последовательности пробелов и кавычки на конце строки ...

$str=preg_replace('/\s+"$/', '"', $str);
3 голосов
/ 19 июня 2009

Ну, избавьтесь от кавычек, затем обрежьте, затем верните кавычки обратно.

Давайте сделаем чистую функцию для этого:

<?php

function clean_string($string, $sep='"') 
{
   // check if there is a quote et get rid of them
   $str = preg_split('/^'.$sep.'|'.$sep.'$/', $string);

   $ret = "";

   foreach ($str as $s)
      if ($s)
        $ret .= trim($s); // triming the right part
      else
        $ret .= $sep; // putting back the sep if there is any

   return $ret;

}

$string = '" this is a test "';
$string1 = '" this is a test ';
$string2 = ' this is a test "';
$string3 = ' this is a test ';
$string4 = ' "this is a test" ';
echo clean_string($string)."\n";
echo clean_string($string1)."\n";
echo clean_string($string2)."\n";
echo clean_string($string3)."\n";
echo clean_string($string4)."\n";

?>

Ouputs:

"this is a test"
"this is a test
this is a test"
this is a test
"this is a test"

Этот дескриптор строк без кавычек, с одной кавычкой только в начале / конце и полностью кавычками Если вы решили использовать «» в качестве разделителя, вы можете просто передать его в качестве параметра.

1 голос
/ 20 июня 2009

PHP имеет несколько встроенных функций, которые делают это. Смотри здесь.

1 голос
/ 19 июня 2009

Если вся ваша строка заключена в кавычки, используйте один из предыдущих ответов. Однако, если ваша строка содержит строки в кавычках, вы можете использовать регулярное выражение для обрезки внутри кавычек:

$string = 'Here is a string: "this is a test "';
preg_replace('/"\s*([^"]+?)\s*"/', '"$1"', $string);
1 голос
/ 19 июня 2009

Вы можете удалить кавычки, обрезать их и добавить обратно.

0 голосов
/ 19 июня 2009

Функция rtrim принимает второй параметр, который позволит вам указать, какие символы вы хотите обрезать. Таким образом, если вы добавите свою цитату к значениям по умолчанию, вы можете обрезать все пробелы и любые кавычки, а затем повторно добавить свою конечную цитату

$string = '"This is a test "' . "\n";
$string = rtrim($string," \t\n\r\0\x0B\"") . '"';
echo $string . "\n";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...