web-dev-qa-db-fra.com

Supprimer les 3 premiers caractères et les 3 derniers caractères de String PHP

J'ai besoin de supprimer les 3 premières lettres d'une chaîne et les 3 dernières lettres d'une chaîne. Je sais que je peux utiliser substr () pour commencer à un certain caractère, mais si j'ai besoin de supprimer les premier et dernier caractères, je ne suis pas sûr de pouvoir réellement l'utiliser. Aucune suggestion?

44
Howdy_McGee

Passez une valeur négative comme argument length (le troisième argument) à substr() , comme:

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

Donc ça:

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

Les sorties:

n Bri
99
Sean Bright

Utilisation

substr($var,1,-1)

ce sera toujours le premier et le dernier sans avoir à utiliser strlen.

Exemple:

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

Sortie:

a, b, d, e, f

28
James

Comme indiqué dans d'autres réponses, vous pouvez utiliser l'une des fonctions suivantes pour atteindre votre objectif:

Cela dépend de la quantité de caractères que vous devez supprimer et si la suppression doit être spécifique. Mais finalement substr() répond parfaitement à votre question.

Peut-être que quelqu'un pense à supprimer le premier/dernier caractère via déréférencement de chaîne . Oubliez cela, cela ne fonctionnera pas car null est aussi un caractère:

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

résultats:

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

Et il n'est pas possible d'utiliser unset($string[0]) pour les chaînes:

Erreur fatale: Impossible de désactiver les décalages de chaîne dans /usr/www/***.php en ligne **

6
mgutt
substr($string, 3, strlen($string) - 6)
2
Maxim Krizhanovsky

Je ne sais pas php, mais ne pouvez-vous pas prendre la longueur de la chaîne, commencer en position 3 et prendre 6 caractères en utilisant substr?

1
Antony Scott
$myString='123456789';
$newString=substr($myString,3,-3);
1
Jonathan M