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.