Supprimer tout ce qui suit un personnage en PHP
peut tout dire comment faire pour supprimer les caractères après ? en php. J'ai une chaîne de caractères de test?=nouveau j'ai besoin de supprimer des personnages ainsi que l' = à partir de cette chaîne.
Où voyez-vous cela?
désolé légère différence de test?q=new
double possible de Retirez la partie d'une chaîne après un certain caractère
test?=new
désolé légère différence de test?q=new
double possible de Retirez la partie d'une chaîne après un certain caractère
OriginalL'auteur Anish | 2012-02-16
Vous devez vous connecter pour publier un commentaire.
Le plus court:
Si vous voulez garder le point d'interrogation, la solution est presque le même:
?
OriginalL'auteur Rok Kralj
Cette solution utilise une expression régulière simple pour supprimer le
?
caractère et tous les caractères suivant.?
, droit?Bonne prise. J'ai mal compris la question. "/\?.+/" est la bonne expression régulière.
OriginalL'auteur DynamiteReed
Pourquoi pas:
OriginalL'auteur Luchian Grigore
Vous pouvez le faire avec une regex, mais la plus simple et la plus rapide façon de le faire est de faire exploser la chaîne de caractère"?", et d'utiliser le premier élément dans le tableau résultant.
$use_this[0] est "test". Si vous souhaitez ajouter le "?" en arrière, juste concaténer:
OriginalL'auteur swayne
Vous pouvez toujours essayer d'utiliser
preg_replace()
ainsi:Si, pour une raison quelconque, vous êtes désireux de garder la
?
dans le résultat... vous pourriez aussi le faire:(ou, vous pouvez utiliser un regard positif-derrière affirmation, comme @BlueJ774 suggéré,) comme ceci:
Mais, idéalement, et de référence pour l'avenir, si vous travaillez avec un chaîne de requête, vous souhaiterez probablement utiliser parse_str à un certain point, comme ceci:
Parce que cela va vous donner un tableau (
$output
, dans ce cas, avec lequel travailler avec toutes les parties de la chaîne de requête, comme ceci:Mais normalement... vous auriez probablement juste envie de travailler avec la chaîne de requête en ce moment... donc, la sortie serait plus comme ceci:
preg_replace
(où le?
) pourrait également être représenté comme$result = preg_replace("/(?<=\?).+/", "", $string);
je pense que l'intention est plus clair de cette façon.Bon point. Dans une écriture régulière, qui aurait plus de sens, c'est juste pour les besoins de cet exemple, j'ai gardé les deux expressions de la même pour plus de simplicité. Mais j'imagine que le
?
serait normalement pas être sauvé...Hmm; quelqu'un sait pourquoi il a été downvoted?
OriginalL'auteur summea
Voici one-liner:
Vous pouvez le tester en ligne de commande suivantes:
OriginalL'auteur kenorb
substr
etstrpos
La façon la plus simple de le faire est avec
substr()
DOCs etstrpos()
DOCs.Comme vous pouvez le voir
substr()
extrait une sous-chaîne d'une chaîne de caractères en indice etstrpos()
renvoie l'index de la première occurrence du caractère, il est à la recherche d' (dans ce cas?
).OriginalL'auteur Treffynnon
Utiliser le strstr fonction.
Le troisième paramètre
true
indique à la fonction de renvoyer le tout avant la première occurrence de la deuxième paramètre.OriginalL'auteur Faisal