177 votes

Supprime la partie d'une chaîne après un certain caractère

Je me demande comment je peux supprimer tout ce qui suit une certaine sous-chaîne en PHP.

ex :

Posted On April 6th By Some Dude

Je voudrais qu'il supprime tout le texte incluant et suivant la sous-chaîne "By".

Merci

348voto

Austin Fitzpatrick Points 2589
$variable = substr($variable, 0, strpos($variable, "By"));

En clair : Donnez-moi la partie de la chaîne qui commence au début et se termine à la position où vous rencontrez le délimiteur pour la première fois.

128voto

VolkerK Points 54118

Si vous utilisez PHP 5.3+, jetez un coup d'œil à l'indicateur $before_needle de l'application strstr()

$s = 'Posted On April 6th By Some Dude';
echo strstr($s, 'By', true);

46voto

squarecandy Points 882

Que diriez-vous d'utiliser explode :

$input = 'Posted On April 6th By Some Dude';
$result = explode(' By',$input);
return $result[0];

Avantages :

24voto

JYelton Points 14014

Vous pourriez le faire :

$posted = preg_replace('/ By.*/', '', $posted);
echo $posted;

Il s'agit d'une fonction de remplacement d'expression régulière qui trouve la chaîne littérale ' By et n'importe quel nombre de caractères après celui-ci ( .* ) et les remplace par une chaîne vide ( '' ), en stockant le résultat dans la même variable ( $posted ) qui a été recherchée.

Si [space]By n'est pas trouvé dans la chaîne d'entrée, la chaîne reste inchangée.

12voto

HADI Points 712

Une méthode serait :

$str = 'Posted On April 6th By Some Dude';
echo strtok($str, 'By'); // Posted On April 6th

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