Renvoyer ce qu'il y a entre deux strings, avant une string ou apres une string, dans une string source


Contenu du snippet

Voila, je me suis mis au php il y a de ça une semaine, et je commence à vraiment apprecir depuis que j'ai appris l'existance des sockets!
Et comme dans tout language, lorsque je bosse avec les sockets, j'aime bien utiliser cette fonction permettant de renvoyer ce qu'il y a entre deux string, dans une string source.
Exemple :
str_entre("petitbatto!!","pe","!!") renverra "titbatto"
str_entre("petitbatto!!","","!!") renverra "petitbatto"
str_entre("petitbatto!!","petit","") renverra "batto!!"
str_entre("petitbatto!!","petit","zzz") renverra ""
str_entre("petitbatto!!","petit","batto!!") renverra ""

Assez pratique pour recuperer par exemple, la valeur d'un header HTTP.

Bref c'est un code sans pretentions, mais que j'estime très pratique, et que je n'ai pas trouvé ici.

Source / Exemple :


function Str_entre($strsource,$strleft,$strright) 
{ 

	if ($strleft <> "") // si strleft n'est pas vide...
		{
		$intstart = strpos($strsource,$strleft)+strlen($strleft); // ...alors on defini intstart = (sa position dans $strsource + sa taille)
		if (strpos($strsource,$strleft) === FALSE) return ""; // ...mais si elle n'est pas trouvé dans $strsource, on retourne une valeur vide.
 		}
	else 
		$intstart = 0; // si strleft est vide, on defini intstart = 0

        if ($strright <> "") // si strright n'est pas vide
       		{
       		$intlen = strpos(substr($strsource,$intstart,strlen($strsource)),$strright);  // ... alors on defini intlen = (sa position dans $strsource en partant de $intstart)
		if (strpos(substr($strsource,$intstart,strlen($strsource)),$strright) === FALSE) return ""; // ...mais si elle n'est pas trouvé dans $strsource, on retourne une valeur vide.
		}
	else 
		$intlen = (strlen($strsource) - $intstart); // si strright est vide, on defini intlen = (la longueur de $strsource - $intstart)
	
	
	return substr($strsource,$intstart,$intlen);	// on renvoit le resultat, commençant à $intstart de longueur $intlen)	
}

Conclusion :


bah ouais c'est court, mais hein... c'est le 1er script que je poste!

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.