PHP'de bir dizenin sonundaki tüm belirli karakterleri nasıl kaldırırım?


87

Son karakteri yalnızca nokta ise nasıl kaldırırım?

$string = "something here.";
$output = 'something here';

Yanıtlar:


159
$output = rtrim($string, '.');

(Referans: PHP.net'te rtrim )


1
@Alix: evet rtrimçok daha kolay unuttum ...!
RageZ

2
Kaldırılması istenmeyen olabilir ... (elipsis):
mys

2
@OndrejIvanic: Bunun için var. Son noktayı kaldırırsanız ve geri kalan hala bir nokta ise, soru başlığı pek bir anlam ifade etmez, değil mi?
Alix Axel

29

rtrim kullanmak tüm "." sonunda, sadece son karakter değil

$string = "something here..";
echo preg_replace("/\.$/","",$string);

3
Sanırım OP hepsini kaldırmak istiyor '.' sonunda, aksi halde neden sadece birini kaldıralım? ;)
Tor Valamo

2
evet, bunu da tahmin ediyorum. soruyu olabildiğince yakından takip etmek.
ghostdog74

2
Bu çok fazla insan kullanıyor farkında değilsiniz, çok daha iyidir character_maskiçinde trimtemelde tüm dizesinde karakter herhangi örneğini kaldırır
Brock Hensley

8

Son karakteri yalnızca bir nokta ise ve buna başvurmadan kaldırmak preg_replaceiçin dizeyi bir karakter dizisi olarak kabul edebilir ve bir nokta ise son karakteri kaldırabiliriz.

if ($str[strlen($str)-1]==='.')
  $str=substr($str, 0, -1);

2
Bu doğru cevaptır, çünkü diğerleri sadece sonuncuyu değil sondaki tüm karakterleri siler. Ama aynı zamanda tür eşitliğini kontrol etmek ===yerine kullanmalısınız==
padawanTony

3

Sorunun çözüldüğünü biliyorum. Ama belki bu cevap birisi için faydalı olacaktır.

rtrim() - Bir dizenin sonundaki boşlukları (veya diğer karakterleri) ayırın

ltrim() - Bir dizenin başından itibaren boşlukları (veya diğer karakterleri) soyun

trim() - Bir dizenin başındaki ve sonundaki boşlukları (veya diğer karakterleri) ayırın

Dizenin sonundaki özel karakterleri kaldırmak için veya dize sonunda dinamik özel karakterler içeriyor mu, bunu regex ile yapabiliriz.

preg_replace - Normal ifade araması yapın ve değiştirin

$regex = "/\.$/";             //to replace the single dot at the end
$regex = "/\.+$/";            //to replace multiple dots at the end
$regex = "/[.*?!@#$&-_ ]+$/"; //to replace all special characters (.*?!@#$&-_) from the end

$result = preg_replace($regex, "", $string);

Dizeye ne zaman $regex = "/[.*?!@#$&-_ ]+$/";uygulandığını anlamak için bazı örnek

$string = "Some text........"; // $resul -> "Some text";
$string = "Some text.????";    // $resul -> "Some text";
$string = "Some text!!!";      // $resul -> "Some text";
$string = "Some text..!???";   // $resul -> "Some text";

Umarım size yardımcı olur.

Teşekkürler :-)


2

Sorunun ne kadar eski olduğunu biliyorum ama cevabım biri için yararlı olabilir.

$string = "something here..........";

ltrim baştaki noktaları kaldırır. Örneğin:-ltrim($string, ".")

rtrim rtrim($string, ".") sondaki noktaları kaldırır.

kırpma trim($string, ".") , sondaki ve baştaki noktaları kaldırır.

bunu regex ile de yapabilirsiniz

preg_replace kaldırılır, sonunda nokta / noktaları kaldırmak için kullanılabilir

$regex = "/\.$/"; //to replace single dot at the end
$regex = "/\.+$/"; //to replace multiple dots at the end
preg_replace($regex, "", $string);

Umarım size yardımcı olur.


2

Son karakter farklı şekillerde kaldırılabilir, İşte bazıları

  • rtrim()
$output = rtrim($string, '.');
  • Regular Expression
preg_replace("/\.$/", "", $string);
  • substr() / mb_substr()
echo mb_substr($string, 0, -1);

echo substr(trim($string), 0, -1);
  • substr() ile trim()
echo substr(trim($string), 0, -1);

0

Son nokta karakterinin konumunu almak için strrpos ve substr kombinasyonunu kullanın ve diğer tüm karakterleri olduğu gibi bırakarak kaldırın:

$string = "something here.";

$pos = strrpos($string,'.');
if($pos !== false){
  $output = substr($string,0,$pos);
} else {
  $output = $string;
}

var_dump($output);

// $output = 'something here';

0

Son konumda var olan verileri kırpmanıza izin veren php'nin rtrim işlevini kullanabilirsiniz.

Örneğin :

$trim_variable= rtrim($any_string, '.');

En basit ve en hızlı yol !!


-1

Misal:

    $columns = array('col1'=> 'value1', 'col2' => '2', 'col3' => '3', 'col4' => 'value4');

    echo "Total no of elements: ".count($columns);
    echo "<br>";
    echo "----------------------------------------------<br />";

    $keys = "";
    $values = "";
    foreach($columns as $x=>$x_value)
    {
      echo "Key=" . $x . ", Value=" . $x_value;
      $keys = $keys."'".$x."',";
      $values = $values."'".$x_value."',";
      echo "<br>";
    }


    echo "----------------------Before------------------------<br />";

    echo $keys;
    echo "<br />";
    echo $values;
    echo "<br />";

    $keys   = rtrim($keys, ",");
    $values = rtrim($values, ",");
    echo "<br />";

    echo "-----------------------After-----------------------<br />";
    echo $keys;
    echo "<br />";
    echo $values;

?>

Çıktı:

Total no of elements: 4
----------------------------------------------
Key=col1, Value=value1
Key=col2, Value=2
Key=col3, Value=3
Key=col4, Value=value4
----------------------Before------------------------
'col1','col2','col3','col4',
'value1','2','3','value4',

-----------------------After-----------------------
'col1','col2','col3','col4'
'value1','2','3','value4'

Bunun için birleştirmeyi kullanabilirsiniz (",", $ dizi)
Nebulosar
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.