Como faço para remover todos os caracteres específicos no final de uma string em PHP?

86

Como removo o último caractere apenas se for um ponto final?

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

Respostas:

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

(Referência: rtrim em PHP.net )

Alix Axel
fonte
1
@Alix: sim esqueci rtrimmuito mais fácil ...!
RageZ
2
Pode ser indesejado remover ... (reticências):
mys,
2
@OndrejIvanic: Você precisa disso. Se você remover o último ponto e o restante ainda for um ponto, o título da pergunta não faria muito sentido, faria?
Alix Axel de
29

usar rtrim substitui todos os "." no final, não apenas o último personagem

$string = "something here..";
echo preg_replace("/\.$/","",$string);
ghostdog74
fonte
3
Acho que o OP deseja remover todos os '.' no final, caso contrário, por que remover apenas um? ;)
Tor Valamo
2
sim, também estou supondo. apenas acompanhando a questão o mais próximo possível.
ghostdog74
2
Isso é muito melhor, muitas pessoas não percebem que o uso character_maskde trimbasicamente remove qualquer instância do caractere em toda a string
Brock Hensley
8

Para remover o último caractere apenas se for um ponto e não recorrer a preg_replace, podemos apenas tratar a string como um array de char e remover o caractere final se for um ponto.

if ($str[strlen($str)-1]==='.')
  $str=substr($str, 0, -1);
CO
fonte
2
Esta é a resposta correta, pois as outras iriam excluir todos os caracteres finais, não apenas o último. Mas você deve usar em ===vez de ==também verificar a igualdade de tipo
padawanTony
3

Eu sei que a questão está resolvida. Mas talvez essa resposta seja útil para alguém.

rtrim() - Retire os espaços em branco (ou outros caracteres) do final de uma string

ltrim() - Retire os espaços em branco (ou outros caracteres) do início de uma string

trim() - Retire os espaços em branco (ou outros caracteres) do início e do final de uma string

Para remover caracteres especiais do final da string ou Se a string contém caracteres especiais dinâmicos no final, podemos fazer por regex.

preg_replace - Faça uma pesquisa e substituição de expressão regular

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

Aqui está algum exemplo para entender quando $regex = "/[.*?!@#$&-_ ]+$/";é aplicado a string

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

Espero que seja útil para você.

Obrigado :-)

Nishal KR
fonte
2

Eu sei que a pergunta é antiga, mas pode ser que minha resposta seja útil para alguém.

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

ltrim removeria os pontos principais. por exemplo:-ltrim($string, ".")

rtrim rtrim($string, ".") removeria os pontos finais.

a guarnição trim($string, ".") removeria pontos à direita e à direita.

você também pode fazer isso por regex

preg_replace iria remover pode ser usado para remover pontos / pontos no final

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

Espero que seja útil para você.

Shahbaz
fonte
2

O último caractere pode ser removido de diferentes maneiras. Aqui estão alguns

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

Use uma combinação de strrpos e substr para obter a posição do último caractere de ponto final e remova-o, deixando todos os outros caracteres intactos:

$string = "something here.";

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

var_dump($output);

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

Você pode usar a função rtrim do php, que permite cortar os dados existentes na última posição.

Por exemplo :

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

Forma mais simples e rápida !!

Moiz Shafqat Husain
fonte
-1

Exemplo:

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

?>

Resultado:

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
fonte
Para isso, você só pode usar join (",", $ array)
Nebulosar