¿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';

Respuestas:


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

(Referencia: rtrim en PHP.net )


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

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

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 :-)


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.


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

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

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 !!


-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'

Para esto, puede usar join (",", $ array)
— Nebulosar
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.