Come rimuovo tutti i caratteri specifici alla fine di una stringa in PHP?


87

Come rimuovo l'ultimo carattere solo se è un punto?

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

Risposte:


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

(Riferimento: rtrim su PHP.net )


1
@Alix: sì, dimenticavo rtrimmolto più facile ...!
RageZ

2
Potrebbe essere indesiderato rimuovere ... (elipsis):
mys

2
@OndrejIvanic: hai per quello. Se rimuovi l'ultimo punto e il rimanente è ancora un punto, il titolo della domanda non avrebbe molto senso, vero?
Alix Axel

29

l'uso di rtrim sostituisce tutto "." alla fine, non solo l'ultimo personaggio

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

3
Immagino che l'OP voglia rimuovere tutti i "." alla fine, altrimenti perché toglierne uno solo? ;)
Tor Valamo

2
si, immagino anche questo. seguendo la domanda il più vicino possibile.
ghostdog74

2
Questo è molto meglio, troppe persone non si rendono conto che l'uso character_maskin trimpraticamente rimuove qualsiasi istanza del personaggio nell'intera stringa
Brock Hensley,

8

Per rimuovere l'ultimo carattere solo se è un punto e non ricorrere a preg_replacenoi possiamo semplicemente trattare la stringa come un array di caratteri e rimuovere il carattere finale se è un punto.

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

2
Questa è la risposta corretta poiché gli altri eliminerebbero tutti i caratteri finali non solo l'ultimo. Ma dovresti usare ===invece di ==per controllare anche l'uguaglianza di tipo
padawanTony

3

So che la domanda è risolta. Ma forse questa risposta sarà utile per qualcuno.

rtrim() - Elimina gli spazi (o altri caratteri) dalla fine di una stringa

ltrim() - Elimina gli spazi (o altri caratteri) dall'inizio di una stringa

trim() - Elimina gli spazi (o altri caratteri) dall'inizio e dalla fine di una stringa

Per rimuovere caratteri speciali dalla fine della stringa o se la stringa contiene caratteri speciali dinamici alla fine, possiamo farlo con regex.

preg_replace - Eseguire una ricerca e sostituzione di espressioni regolari

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

Ecco qualche esempio per capire quando $regex = "/[.*?!@#$&-_ ]+$/";viene applicato alla stringa

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

Spero sia utile per te.

Grazie :-)


2

So che la domanda è qualcosa di vecchio ma potrebbe essere la mia risposta è utile per qualcuno.

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

ltrim rimuove i punti iniziali . per esempio:-ltrim($string, ".")

rtrim rtrim($string, ".") rimuove i punti finali.

il taglio trim($string, ".") rimuove i punti finali e iniziali.

puoi farlo anche con regex

preg_replace rimuove può essere utilizzato per rimuovere punto / punti alla fine

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

Spero sia utile per te.


2

L'ultimo personaggio può essere rimosso in diversi modi, eccone alcuni

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

0

Usa una combinazione di strrpos e substr per ottenere la posizione dell'ultimo carattere punto e rimuoverlo lasciando intatti tutti gli altri caratteri:

$string = "something here.";

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

var_dump($output);

// $output = 'something here';

0

Puoi usare la funzione rtrim di php che ti permette di tagliare i dati che esistono nell'ultima posizione.

Per esempio :

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

Modo più semplice e veloce !!


-1

Esempio:

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

?>

Produzione:

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'

Per questo puoi semplicemente usare join (",", $ array)
Nebulosar
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.