¿Cómo elimino todos los caracteres específicos al final de una cadena en PHP?

86

¿Cómo elimino el último carácter solo si es un punto?

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

Respuestas:

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

(Referencia: rtrim en PHP.net )

Alix Axel
fuente
1
@Alix: sí se olvidó de rtrimmucho más fácil ...!
RageZ
2
Puede que no se desee eliminar ... (puntos suspensivos):
miércoles
2
@OndrejIvanic: Tienes para eso. Si quita el último punto y el resto sigue siendo un punto, el título de la pregunta no tendría mucho sentido, ¿verdad?
Alix Axel
29

el uso de rtrim reemplaza todo "." al final, no solo el último personaje

$string = "something here..";
echo preg_replace("/\.$/","",$string);
ghostdog74
fuente
3
Supongo que el OP quiere eliminar todo '. al final, de lo contrario, ¿por qué eliminar solo uno? ;)
Tor Valamo
2
sí, yo también lo supongo. simplemente siguiendo la pregunta lo más cerca posible.
ghostdog74
2
Esto es mucho mejor, mucha gente no se da cuenta utilizando character_masken trimbásicamente elimina cualquier instancia del carácter en la cadena completa
Brock Hensley
8

Para eliminar el último carácter solo si es un punto y sin recurrir a él preg_replace, podemos tratar la cadena como una matriz de caracteres y eliminar el carácter final si es un punto.

if ($str[strlen($str)-1]==='.')
  $str=substr($str, 0, -1);
CO
fuente
2
Esta es la respuesta correcta ya que las otras eliminarían todos los caracteres finales, no solo el último. Pero debe usar en ===lugar de ==para verificar también la igualdad de tipos
padawanTony
3

Sé que la pregunta está resuelta. Pero tal vez esta respuesta sea útil para alguien.

rtrim() - Quite los espacios en blanco (u otros caracteres) del final de una cadena

ltrim() - Quite los espacios en blanco (u otros caracteres) del principio de una cadena

trim() - Quite los espacios en blanco (u otros caracteres) del principio y el final de una cadena

Para eliminar caracteres especiales del final de la cadena o si la cadena contiene caracteres especiales dinámicos al final, podemos hacerlo mediante expresiones regulares.

preg_replace - Realizar una búsqueda y reemplazo de expresiones regulares

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

Aquí hay un ejemplo para entender cuándo $regex = "/[.*?!@#$&-_ ]+$/";se aplica a una cadena.

$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 te sea de ayuda.

Gracias :-)

Nishal KR
fuente
2

Sé que la pregunta es algo antigua, pero puede que mi respuesta sea útil para alguien.

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

ltrim eliminaría los puntos iniciales . por ejemplo:-ltrim($string, ".")

rtrim rtrim($string, ".") eliminaría los puntos finales.

podar trim($string, ".") eliminaría los puntos iniciales y finales.

también puedes hacer esto por expresiones regulares

preg_replace would remove se puede usar para eliminar puntos / puntos al final

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

Espero que te sea de ayuda.

Shahbaz
fuente
2

El último carácter se puede eliminar de diferentes formas, aquí hay algunas

  • 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);
Nishad Up
fuente
0

Use una combinación de strrpos y substr para obtener la posición del último carácter de punto y elimínelo dejando todos los demás 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
fuente
0

Puede usar la función rtrim de php que le permite recortar los datos que existen en la última posición.

Por ejemplo :

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

Manera más sencilla y en ayunas !!

Moiz Shafqat Husain
fuente
-1

Ejemplo:

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

?>

Salida:

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
fuente
Para esto, puede usar join (",", $ array)
Nebulosar