Beyaz bir boşluk Kırpma

6 Cevap php

Tırnak içeren bir dize, hep son teklif önce ekstra bir boşluk olsun. Örneğin

"Bu bir denemedir" (string includes quotes)

Sonra test ama end quote önce boşluk unutmayın. Nasıl bu alandan kurtulabilirsiniz ki?

Ben rtrim denedim ama sadece belli ki bu dava sonunda değil, dizenin sonunda karakter için geçerlidir.

Herhangi bir ipucu? Teşekkürler

6 Cevap

Burada sadece alanlarda bir dizi ve end bir dize bir teklifi maçları başka bir yol, var ...

$str=preg_replace('/\s+"$/', '"', $str);

Peki, sonra tekrar tırnak koymak, Döşeme sonra, tırnak kurtulmak.

Kullanıcının Bunun için temiz bir işlev yapalım:

<?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";

?>

Çıkışlardan:

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

Bu bir tek başlangıç ​​/ sonunda alıntı ve tamamen alıntı, hiçbir alıntı ile dizeleri işlemek. Eğer bir ayırıcı olarak "'" almaya karar verirseniz, sadece bir parametre olarak geçirebilirsiniz.

Sen, tırnak kaldırın Döşeme, daha sonra tırnak tekrar ekleyebilirsiniz.

Bütün dize tırnak içinde ise, önceki cevapların birini kullanın. Lütfen dize contains dizeleri alıntı eğer Ancak, tırnak içinde kırpmak için normal bir ifade kullanabilirsiniz:

$string = 'Here is a string: "this is a test "';
preg_replace('/"\s*([^"]+?)\s*"/', '"$1"', $string);

PHP bunu fonksiyonları inşa birkaç sahiptir. Look here.

Rtrim fonksiyonu bunu kısaltmak istediğiniz hangi karakterlerin belirlemenizi sağlayacak ikinci bir parametre kabul eder. Yani varsayılan için teklif eklerseniz, tüm boşluk ve herhangi bir tırnak kırpabilir ve ardından bitiş alıntı yeniden eklemeniz

$string = '"This is a test "' . "\n";
$string = rtrim($string," \t\n\r\0\x0B\"") . '"';
echo $string . "\n";