[php] enlever une partie de chaine d'une chaine complete

WRInaute occasionnel
Bonjour,

je dois enlever une partie de chaine d'une chaine complete:

La chaine se compose d'une serie de mots puis du mot "dans" et ensuite une autre serie de mots : " [partie1]dans[partie2] "

je dois enlever la partie2 ainsi que le mot "dans". Mais dans la partie1 il peut y avoir le mot "dans". Donc il faut enlever tous les mots a partir du dernier "dans"

je n'arrive pas a trouver la position du dernier "dans". je ne vois pas quels fonctions utilisée.
J'ai essayé strripos en faisant une inversion de la chaine pour trouver la position du dernier "dans" mais il faut php5 :?

quelqu'un a t-il une idée?
 
WRInaute impliqué
Code:
$string = "Il a un machin dans la boite dans la voiture";
$string = strrev($string);
$string = strrev(substr($string,strpos($string,"snad")+5));
echo $string;
 
WRInaute impliqué
pour le fun

Code:
$string = "Il a un machin dans la boite dans la voiture";
$tab = explode("dans",$string);
unset($tab[count($tab)-1]);
$sep = "";
foreach ($tab as $value) { echo $sep.$value; $sep = "dans"; }
 
WRInaute passionné
Bah facile.

- Avant d'afficher, tu mets "dns" dans la variable à la place de ton "dans" du milieu.
- Tu vires les "dans"
- Tu changes "dns" en "dans"
- Tu affiches
 
Nouveau WRInaute
Strstr ne peut pas répondre à ta question ?

Code:
<?php
$email  = 'name@example.com';
$domain = strstr($email, '@');
echo $domain; // Affiche : @example.com

$user = strstr($email, '@', true); // Depuis PHP 5.3.0
echo $user; // Affiche : name
?>
 
Discussions similaires
Haut