Supprimer les 3 premiers caractères et les 3 derniers caractères de la chaîne 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 de caractères. Je sais que je peux utiliser substr() pour commencer à un certain caractère mais si j'ai besoin de rayer à la fois le premier et le dernier caractère, Je ne suis pas sûr de pouvoir réellement utiliser ceci. Toutes les suggestions?

43
demandé sur Peter Meadley 2011-08-12 23:55:32

6 réponses

passez une valeur négative comme length argument (le 3ème argument), like:

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

Donc:

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

extrants:

n Bri
96
répondu Sean Bright 2011-08-12 19:57:31

Utiliser

substr($var,1,-1)

ce sera toujours obtenir 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
répondu James 2015-03-15 23:38:01

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 enlever et si l'enlèvement doit être spécifique. Mais enfin substr() répond parfaitement à votre question.

peut-être que quelqu'un pense à enlever le premier/dernier char à travers dereferencing string. Oubliez ça, ça ne marchera pas comme ça!--3--> est un char ainsi:

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

renvoie:

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:

Fatal error: impossible de désactiver les offsets de chaîne dans / usr/www/***.php**

6
répondu mgutt 2015-04-02 11:10:38
substr($string, 3, strlen($string) - 6)
2
répondu Maxim Krizhanovsky 2012-08-02 08:33:44

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

1
répondu Antony Scott 2011-08-12 19:57:15
$myString='123456789';
$newString=substr($myString,3,-3);
1
répondu Jonathan M 2011-08-12 19:57:54