PHPで文字列の最後にある特定の文字をすべて削除するにはどうすればよいですか?


86

ピリオドの場合にのみ最後の文字を削除するにはどうすればよいですか?

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

回答:


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

(参照:PHP.netのrtrim


1
@Alix:はいrtrim、もっと簡単なことを忘れていました...!
RageZ 2010年

2
削除するのは望ましくないかもしれません...(省略記号):
mys

2
@OndrejIvanic:そのためにあります。最後のドットを削除しても、残りがまだドットである場合、質問のタイトルはあまり意味がありませんね。
Alix Axel

29

rtrimを使用すると、すべての「。」が置き換えられます。最後に、最後の文字だけでなく

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

3
OPはすべての「。」を削除したいと思っていると思います。最後に、そうでなければなぜ1つだけ削除するのですか?;)
Tor Valamo 2010年

2
はい、私もそう思います。質問にできるだけ近づいてください。
ghostdog74 2010年

2
これははるかに優れており、多くの人がで使用するとcharacter_masktrim基本的に文字列全体の文字のインスタンスが削除されることに気づいていません
Brock Hensley 2014年

8

ピリオドであり、それに頼らない場合にのみ最後の文字を削除するにはpreg_replace、文字列をcharの配列として扱い、最後の文字がドットの場合は削除します。

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

2
他の文字は最後の文字だけでなくすべての末尾の文字を削除するため、これは正解です。ただし、型の同等性を確認する===代わりに==を使用する必要があります
padawanTony 2016

3

私は質問が解決されたことを知っています。しかし、おそらくこの答えは誰かに役立つでしょう。

rtrim() -文字列の末尾から空白(または他の文字)を削除します

ltrim() -文字列の先頭から空白(または他の文字)を削除します

trim() -文字列の最初と最後から空白(または他の文字)を削除します

文字列の末尾から特殊文字を削除する場合、または文字列の末尾に動的な特殊文字が含まれている場合は、正規表現で行うことができます。

preg_replace -正規表現の検索と置換を実行します

$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);

$regex = "/[.*?!@#$&-_ ]+$/";文字列にいつ適用されるかを理解するためのいくつかの例を次に示します

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

お役に立てば幸いです。

ありがとう:-)


2

私は質問がいくらか古いことを知っていますが、私の答えは誰かに役立つかもしれません。

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

ltrimは先頭のドットを削除します。例えば:-ltrim($string, ".")

rtrim rtrim($string, ".")は末尾のドットを削除します。

トリム trim($string, ".")は、末尾と先頭のドットを削除します。

正規表現でこれを行うこともできます

preg_replaceはremoveを使用して、最後のドットを削除できます

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

お役に立てば幸いです。


2

最後の文字はさまざまな方法で削除できます。ここにいくつかあります

  • 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()trim()
echo substr(trim($string), 0, -1);

0

strrpossubstrの組み合わせを使用して、最後のピリオド文字の位置を取得し、それを削除して、他のすべての文字をそのまま残します。

$string = "something here.";

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

var_dump($output);

// $output = 'something here';

0

最後の位置に存在するデータをトリミングできるphpのrtrim関数を使用できます。

例えば ​​:

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

最も簡単で断食した方法!!


-1

例:

    $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;

?>

出力:

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'

これには、join( "、"、$ array)を使用できます
Nebulosar 2017
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.