272 votes

Comment supprimer le caractère de tête d'une chaîne de caractères ?

J'ai une chaîne d'entrée comme :

$str = ':this is a applepie :) ';

Comment supprimer la première occurrence : avec PHP ?

Résultat souhaité : this is a applepie :)

1 votes

1 votes

589voto

mario Points 76989

En substr() vous aidera probablement dans ce domaine :

 $str = substr($str, 1);

Les chaînes de caractères sont indexées à partir de 0, et le deuxième paramètre de cette fonction prend le début de la coupe. Donc 1, et le premier caractère disparaît.

35 votes

Attention à l'unicode. Si vous avez affaire à une chaîne de caractères arbitraire (par exemple, "Ål <- anguille en danois"), vous devez utiliser mb_substr et spécifier l'encodage.

0 votes

Cette implémentation n'est pas correcte, elle ne fonctionne pas avec la chaîne de caractères unique "a". Si vous essayez une chaîne de caractères unique, substr renvoie une valeur booléenne.

2 votes

@anru Le manuel indique que si la longueur de la chaîne est égale au paramètre de départ, une chaîne vide sera renvoyée. Avant la version 7, false a été renvoyée. Vous devez donc vérifier s'ils sont égaux si ce n'est pas le comportement que vous souhaitez.

351voto

Haim Evgi Points 40786

Pour supprimer tous les : à partir du début d'une chaîne de caractères, vous pouvez utiliser ltrim :

$str = '::f:o:';
$str = ltrim($str, ':');
var_dump($str); //=> 'f:o:'

119 votes

Notez que lrtim supprimera tous les ::::: . Parfois, ce comportement n'est pas souhaité.

5 votes

Notez que cette fonction n'est destinée qu'aux caractères uniques. ltrim coupe tous les caractères de la chaîne fournie : ltrim('prefixprefix_postfix', 'prefix') se traduit par '_postfix';

2 votes

"Comment supprimer le premier caractère d'une chaîne de caractères en PHP" était la question et ce commentaire n'y répond pas.

98voto

alexn Points 25639

Utilisation substrats :

$str = substr($str, 1); // this is a applepie :)

70voto

Hayenn Points 131

Temps d'exécution pour les 3 réponses :

Retirer la première lettre en remplaçant la casse

$str = "hello";
$str[0] = "";
// $str[0] = false;
// $str[0] = null;
// replaced by �, but ok for echo

Temps d'exécution pour 1.000.000 de tests : 0.39602184295654 sec


Supprimer la première lettre avec substr()

$str = "hello";
$str = substr($str, 1);

Temps d'exécution pour 1.000.000 de tests : 5.153294801712 sec


Supprimer la première lettre avec ltrim()

$str = "hello";
$str= ltrim ($str,'h');

Temps d'exécution pour 1.000.000 de tests : 5.2393000125885 sec


Supprimer la première lettre avec preg_replace()

$str = "hello";
$str = preg_replace('/^./', '', $str);

Temps d'exécution pour 1.000.000 de tests : 6.8543920516968 sec

0 votes

Merci. Voir ma mise à jour. Cela m'a posé un problème lorsque j'ai utilisé la chaîne mise à jour dans une requête SQL.

6 votes

Je viens d'essayer le $str[0] = ''; solution et il n'a pas Il est vrai que cela fonctionne, mais si vous prévoyez ensuite d'utiliser la variable, par exemple pour comparer les résultats de l'enquête, il est possible d'utiliser les données de l'enquête. > o < cela ne fonctionnera pas. Il compte toujours ` ` comme +` par exemple $str = 'hello'; $str[0] = ''; var_dump($str); // string(5) 'ello'

0 votes

@Ian : J'ai rencontré le même problème en récupérant des enregistrements d'une API à l'aide d'un mot-clé. var_dump($keyword) qui affichait la longueur de caractère précédente puis j'ai essayé de couper le mot-clé et cela a fonctionné correctement. var_dump(trim($keyword)) .. J'espère que cela aidera quelqu'un :)

9voto

Gammerz Points 21
$str = substr($str, 1);

Voir Manuel PHP exemple 3

echo substr('abcdef', 1);     // bcdef

Nota:

unset($str[0]) 

ne fonctionnera pas car il n'est pas possible d'annuler une partie d'une chaîne de caractères :-)

Fatal error: Cannot unset string offsets

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X