Wie entferne ich alle spezifischen Zeichen am Ende einer Zeichenfolge in PHP?

82

Wie entferne ich das letzte Zeichen nur, wenn es ein Punkt ist?

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

Antworten:

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

(Referenz: rtrim auf PHP.net )

Alix Axel
quelle
1
@Alix: ja rtrimviel einfacher vergessen vergessen ...!
RageZ
2
Es könnte unerwünscht sein, zu entfernen ... (Auslassungspunkte):
mys
2
@OndrejIvanic: Das hast du dafür. Wenn Sie den letzten Punkt entfernen und der verbleibende noch ein Punkt ist, würde der Titel der Frage nicht viel Sinn machen, oder?
Alix Axel
28

Die Verwendung von rtrim ersetzt alle "." am Ende nicht nur das letzte Zeichen

$string = "something here..";
echo preg_replace("/\.$/","",$string);
Ghostdog74
quelle
3
Ich vermute, das OP möchte alle '' entfernen. am Ende, warum sonst nur eine entfernen? ;)
Tor Valamo
2
Ja, das vermute ich auch. Folgen Sie einfach der Frage so genau wie möglich.
Ghostdog74
2
Dies ist viel besser, zu viele Leute wissen nicht, dass die Verwendung von in character_maskim trimGrunde genommen jede Instanz des Charakters in der gesamten Zeichenfolge entfernt
Brock Hensley
7

Um das letzte Zeichen nur dann zu entfernen, wenn es sich um einen Punkt handelt und nicht darauf zurückgegriffen wird preg_replace, können Sie die Zeichenfolge einfach als Zeichenfeld behandeln und das letzte Zeichen entfernen, wenn es sich um einen Punkt handelt.

if ($str[strlen($str)-1]==='.')
  $str=substr($str, 0, -1);
CO
quelle
2
Dies ist die richtige Antwort, da die anderen alle nachfolgenden Zeichen löschen würden, nicht nur das letzte. Aber Sie sollten ===stattdessen verwenden, ==um auch die
Typgleichheit
2

Ich weiß, dass die Frage etwas alt ist, aber vielleicht ist meine Antwort für jemanden hilfreich.

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

ltrim würde führende Punkte entfernen. beispielsweise:-ltrim($string, ".")

rtrim rtrim($string, ".") würde nachfolgende Punkte entfernen.

trimmen trim($string, ".") würde nachlaufende und führende Punkte entfernen.

Sie können dies auch durch Regex tun

preg_replace würde entfernen kann verwendet werden, um Punkte am Ende zu entfernen

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

Ich hoffe es ist hilfreich für dich.

Shahbaz
quelle
2

Ich weiß, dass die Frage gelöst ist. Aber vielleicht ist diese Antwort für jemanden hilfreich.

rtrim() - Entfernen Sie Leerzeichen (oder andere Zeichen) vom Ende einer Zeichenfolge

ltrim() - Entfernen Sie Leerzeichen (oder andere Zeichen) vom Anfang einer Zeichenfolge

trim() - Entfernen Sie Leerzeichen (oder andere Zeichen) vom Anfang und Ende einer Zeichenfolge

Zum Entfernen von Sonderzeichen am Ende der Zeichenfolge oder Wenn die Zeichenfolge am Ende dynamische Sonderzeichen enthält, können Sie dies durch Regex tun.

preg_replace - Führen Sie eine Suche und Ersetzung für reguläre Ausdrücke durch

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

Hier ist ein Beispiel, um zu verstehen, wann $regex = "/[.*?!@#$&-_ ]+$/";eine Zeichenfolge angewendet wird

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

Ich hoffe es ist hilfreich für dich.

Vielen Dank :-)

Nishal KR
quelle
1

Das letzte Zeichen kann auf verschiedene Arten entfernt werden. Hier einige

  • rtrim ():

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

  • Regulären Ausdruck

    preg_replace ("/.$/", "", $ string);

  • substr () / mb_substr ()

    echo mb_substr ($ string, 0, -1);

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

  • substr () mit trim ()

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

Nishad Up
quelle
0

Verwenden Sie eine Kombination aus strrpos und substr , um die Position des letzten Punktzeichens zu ermitteln und zu entfernen, wobei alle anderen Zeichen intakt bleiben:

$string = "something here.";

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

var_dump($output);

// $output = 'something here';
GreensterRox
quelle
0

Sie können die rtrim-Funktion von php verwenden, mit der Sie die Daten trimmen können, die an der letzten Position vorhanden sind.

Zum Beispiel :

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

Einfachster und schnellster Weg !!

Moiz Shafqat Husain
quelle
-1

Beispiel:

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

?>

Ausgabe:

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'
Chittaranjan Sethi
quelle
Hierfür können Sie einfach join (",", $ array)
Nebulosar