Notez que lrtim supprimera tout :::::. Parfois, ce n'est pas un comportement souhaité.
CoR
5
notez que cela n'est destiné qu'aux caractères uniques. ltrim supprimera tous les caractères de la chaîne fournie: ltrim('prefixprefix_postfix', 'prefix')résultats dans'_postfix';
Soyez conscient de l'unicode. Si vous avez affaire à une chaîne arbitraire (par exemple "Ål <- danois pour l'anguille"), vous devez utiliser mb_substr et spécifier l'encodage.
Thomas Jensen
ce n'est pas une implémentation correcte, cela ne fonctionne pas avec la chaîne de caractères unique "a". si vous essayez une chaîne de caractères unique, substr retourne une valeur booléenne
anru
2
@anru Le manuel indique que si la longueur de la chaîne est égale au paramètre de démarrage, une chaîne vide sera retournée. Avant la version 7, falseétait retourné. Vous devez donc vérifier s'ils sont égaux si ce n'est pas le comportement que vous souhaitez.
Merci. Voir ma mise à jour, cependant. Cela m'a causé un problème lors de l'utilisation de la chaîne mise à jour dans une requête SQL.
rybo111
6
J'ai juste essayé la $str[0] = '';solution et ça n'a pas marché. bien, cependant, si vous prévoyez d'utiliser la variable par exemple pour comparer >ou <cela ne fonctionnera pas. Il compte toujours `` comme + '' par exemple $str = 'hello'; $str[0] = ''; var_dump($str); // string(5) 'ello'
Ian
@Ian: Je suis tombé sur le même problème lors de la récupération des enregistrements d'une API à l'aide d'un mot-clé, var_dump($keyword)j'ai essayé qui montrait la longueur du caractère précédent .. puis j'ai essayé de couper le mot-clé et cela a bien fonctionné var_dump(trim($keyword)).. J'espère que cela aide quelqu'un .. :)
Syed Qarib
3
Cela ne fonctionne pas. La position "supprimé" est remplacée par un octet nul, vous obtenez donc "\ 0hello" au lieu de "hello".
Josef Kufner
1
J'obtiens "Avertissement: impossible d'attribuer une chaîne vide à un décalage de chaîne" pour $ str [0] = "";
Après d'autres tests, je ne recommande plus de l'utiliser. Cela m'a causé un problème lors de l'utilisation de la chaîne mise à jour dans une requête MySQL et de la modification substrdu problème. J'ai pensé à supprimer cette réponse, mais les commentaires suggèrent qu'elle est plus rapide pour que quelqu'un puisse l'utiliser. Vous pouvez trouver que rogner la chaîne mise à jour résout les problèmes de longueur de chaîne.
Parfois, vous n'avez pas besoin d'une fonction:
$str[0]='';
Par exemple:
$str ='AHello';
$str[0]='';
echo $str;// 'Hello'
Cette méthode modifie la chaîne existante plutôt que d'en créer une autre.
@EmanuilRusev comment cela? Juste curieux si vous voulez dire qu'il est plus rapide à taper ou qu'il fonctionne plus rapidement.
rybo111
Je veux dire qu'il s'exécute plus rapidement.
Emanuil Rusev
@EmanuilRusev Je serais intéressé si vous pouviez fournir des statistiques que j'ajouterai à la réponse.
rybo111
1
Je dois être prudent avec ça. Le code ci-dessous renvoie bool (false). $ foo = 'livre'; $ bar = 'livre'; $ bar = substr ($ bar, 1); $ foo [0] = ''; var_dump ($ foo === $ bar);
iftrepo
8
La réponse acceptée:
$str = ltrim($str,':');
fonctionne mais en supprimera plusieurs :lorsqu'il y en a plusieurs au début.
Supprime les occurrences de chaque mot dans un tableau depuis le début et la fin d'une chaîne + un espace et éventuellement des caractères uniques supplémentaires comme par le trim normal ()
<?php
function trim_words($what, $words, $char_list =''){if(!is_array($words))returnfalse;
$char_list .=" \t\n\r\0\x0B";// default trim chars
$pattern ="(".implode("|", array_map('preg_quote', $words)).")\b";
$str = trim(preg_replace('~'.$pattern.'$~i','', preg_replace('~^'.$pattern.'~i','', trim($what, $char_list))), $char_list);return $str;}// for example:
$trim_list = array('AND','OR');
$what =' OR x = 1 AND b = 2 AND ';
print_r(trim_words($what, $trim_list));// => "x = 1 AND b = 2"
$what =' ORDER BY x DESC, b ASC, ';
print_r(trim_words($what, $trim_list,','));// => "ORDER BY x DESC, b ASC"?>
celui-ci ne fonctionne pas avec une chaîne de caractères unique: comme "a"
anru
Vous avez raison =) Donc, croyez qu'une solution possible serait de tester avant qu'il ne contienne qu'un seul caractère. Par exemple: $ str = strlen ($ str)> 1? substr ($ str, - (strlen ($ str) -1)): $ str; Ou $ str = strlen ($ str)> 1? substr ($ str, - (strlen ($ str) -1)): ''; parce que l'idée est de supprimer le dernier caractère, si vous n'en avez qu'un ...: P
Réponses:
Pour supprimer tout
:
depuis le début d'une chaîne, vous pouvez utiliser ltrim :la source
:::::
. Parfois, ce n'est pas un comportement souhaité.ltrim('prefixprefix_postfix', 'prefix')
résultats dans'_postfix';
La
substr()
fonction vous aidera probablement ici:Les chaînes sont indexées à partir de 0, et ce deuxième paramètre de fonction prend le cutstart. Faites donc ce 1, et le premier caractère est parti.
la source
false
était retourné. Vous devez donc vérifier s'ils sont égaux si ce n'est pas le comportement que vous souhaitez.Utilisez substr :
la source
Temps d'exécution pour les 3 réponses:
Retirez la première lettre en remplaçant le cas
Temps d'exécution pour 1.000.000 tests:
0.39602184295654
secSupprimer la première lettre avec substr ()
Temps d'exécution pour 1.000.000 tests:
5.153294801712
secSupprimer la première lettre avec ltrim ()
Temps d'exécution pour 1.000.000 tests:
5.2393000125885
secSupprimez la première lettre avec preg_replace ()
Temps d'exécution pour 1.000.000 tests:
6.8543920516968
secla source
$str[0] = '';
solution et ça n'a pas marché. bien, cependant, si vous prévoyez d'utiliser la variable par exemple pour comparer>
ou<
cela ne fonctionnera pas. Il compte toujours `` comme + '' par exemple$str = 'hello'; $str[0] = ''; var_dump($str); // string(5) 'ello'
var_dump($keyword)
j'ai essayé qui montrait la longueur du caractère précédent .. puis j'ai essayé de couper le mot-clé et cela a bien fonctionnévar_dump(trim($keyword))
.. J'espère que cela aide quelqu'un .. :)Voici le code
Production:
la source
Pour supprimer le premier caractère de chaîne en PHP,
la source
Voir l' exemple 3 du manuel PHP
Remarque:
ne fonctionnera pas car vous ne pouvez pas supprimer une partie d'une chaîne: -
la source
Mettre à jour
Après d'autres tests, je ne recommande plus de l'utiliser. Cela m'a causé un problème lors de l'utilisation de la chaîne mise à jour dans une requête MySQL et de la modification
substr
du problème. J'ai pensé à supprimer cette réponse, mais les commentaires suggèrent qu'elle est plus rapide pour que quelqu'un puisse l'utiliser. Vous pouvez trouver que rogner la chaîne mise à jour résout les problèmes de longueur de chaîne.Parfois, vous n'avez pas besoin d'une fonction:
Par exemple:
Cette méthode modifie la chaîne existante plutôt que d'en créer une autre.
la source
La réponse acceptée:
fonctionne mais en supprimera plusieurs
:
lorsqu'il y en a plusieurs au début.supprimera tout caractère dès le début.
cependant,
fonctionne parfaitement.
la source
vous pouvez utiliser la fonction sbstr ()
la source
Supprime les occurrences de chaque mot dans un tableau depuis le début et la fin d'une chaîne + un espace et éventuellement des caractères uniques supplémentaires comme par le trim normal ()
la source
Le code fonctionne bien pour moi.
Peut-être aussi contribuer avec des réponses.
la source
utiliser la fonction mb_substr
la source