Eliminar los primeros 3 caracteres y los últimos 3 caracteres de la cadena PHP


Necesito eliminar las primeras 3 letras de una cadena y las últimas 3 letras de una cadena. Sé que puedo usar substr () para comenzar con un cierto carácter, pero si necesito eliminar el primer y el último carácter, no estoy seguro de si realmente puedo usar esto. Alguna sugerencia?

Author: Peter Meadley, 2011-08-12

6 answers

Pase un valor negativo como el argumento length (el tercer argumento), como:

$result = substr($string, 3, -3);

Así que esto:

<?
    $string = "Sean Bright";
    $string = substr($string, 3, -3);
    echo $string;
?>

Salidas:

n Bri
 96
Author: Sean Bright,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-08-12 19:57:31

Use

substr($var,1,-1)

Esto siempre será el primero y el último sin tener que usar strlen.

Ejemplo:

<?php
    $input = ",a,b,d,e,f,";
    $output = substr($input, 1, -1);
    echo $output;
?>

Producto:

A,b,d,e, f

 28
Author: James,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-03-15 23:38:01

Como se indica en otras respuestas, puede usar una de las siguientes funciones para alcanzar su objetivo:

Depende de la cantidad de caracteres que necesita para eliminar y si la eliminación debe ser específica. Pero finalmente substr() responde a tu pregunta perfectamente.

Tal vez alguien piensa en eliminar el primer/último carácter a través de desreferenciación de cadenas. Olvida eso, no funcionará como null es un char también:

<?php
$string = 'Stackoverflow';
var_dump($string);
$string[0] = null;
var_dump($string);
$string[0] = null;
var_dump($string);
echo ord($string[0]) . PHP_EOL;
$string[1] = '';
var_dump($string);
echo ord($string[1]) . PHP_EOL;
?>

Devuelve:

string(13) "Stackoverflow"
string(13) "tackoverflow"
string(13) "tackoverflow"
0
string(13) "ackoverflow"
0

Y no es posible usar unset($string[0]) para cadenas:

Error fatal : No se pueden desajustar los desplazamientos de cadena en /usr/www/***.php {[38] } en línea * *

 6
Author: mgutt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-04-02 11:10:38
substr($string, 3, strlen($string) - 6)
 2
Author: Maxim Krizhanovsky,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-08-02 08:33:44

No conozco php, pero ¿no puede tomar la longitud de la cadena, comenzar como posición 3 y tomar caracteres length-6 usando substr?

 1
Author: Antony Scott,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-08-12 19:57:15
$myString='123456789';
$newString=substr($myString,3,-3);
 1
Author: Jonathan M,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-08-12 19:57:54