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?
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
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
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 **
substr($string, 3, strlen($string) - 6)
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?
$myString='123456789';
$newString=substr($myString,3,-3);