Fonction pour decouper une chaine

Soyez le premier à donner votre avis sur cette source.

Vue 15 820 fois - Téléchargée 251 fois

Description

trois fonctions qui servent a decouper une chaine de caractere suivant la separation entree. fct_string_after($chaine_source,$separateur), fct_string_before($chaine_source,$separateur), fct_string_between($chaine_source,$sep1,$sep2);

Source / Exemple :


//fonction qui retourne le restant de la chaine si $avec=0 alors c'est sans le mot cle
function fct_string_after($source,$morceau,$avec=0)
{
	$pos = strpos($source, $morceau);
	if ($pos===false)
	{
		return "*";
	}
	//retourne la chaine de l'emplacement $pos a strlen($html)
	if ($avec==0)
		$rest = substr($source, $pos+strlen($morceau), strlen($source)-$pos-strlen($morceau));
	else
		$rest = substr($source, $pos, strlen($source)-$pos);
	return $rest;
}
function fct_string_before($source,$morceau)
{
	$pos = strpos($source, $morceau);
	if ($pos===false)
	{
		return "*";
	}
	//retourne la chaine de l'emplacement 0 a $pos
	$rest = substr($source, 0, $pos); 
	return $rest;
}
//fonction qui va decouper la chaine source et renvoiyer une chaine contenu entre st_debut et st_fin
//$avec=0 -> les chaine non contenu dans la sortie
function fct_string_between($source,$st_debut,$st_fin,$avec=0)
{
	$pos_deb = strpos($source, $st_debut);
	if ($pos_deb===false)
	{
		return "*";
	}
	$pos_fin = strpos($source, $st_fin);
	if ($pos_fin===false)
	{
		return "*";		//les teste au cas ou ne le trouve pas
	}
	
	//on decoupe la chaine
	if ($avec==0)
	{
		$rest = substr($source, 0, $pos_fin);
		//echo $rest."<br>";
		$rest = substr($rest, $pos_deb+1, strlen($rest)-$pos_deb);
	}
	else
	{
		$rest = substr($source, 0, $pos_fin);
		$rest = substr($rest, $pos_deb, strlen($rest)-$pos_deb);
	}
	return $rest; 
}

Conclusion :


pour avoir d'autre source voir http://www.karando.com/karando-librairie-php.php
J'ajoute regulierement des fonctions.(je pense utile maintenant à vous de voir)

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
1
Date d'inscription
mardi 22 juillet 2003
Statut
Membre
Dernière intervention
16 mai 2006

Mais c'est toujours bien de savoir refaire les fonctions standards ... :)

AS
Messages postés
40
Date d'inscription
jeudi 23 janvier 2003
Statut
Membre
Dernière intervention
13 août 2008

Ca sert à rien de réinventer l'eau chaude...
Il suffit juste de lire la doc en entier !

=> http://www.php.net/manual/fr/function.explode.php

Cette fonction splite une chaine par un séparateur et te retourne un tableau contenant les valeurs comprises entre ces séparateurs.

Exemple :

$str = 'un|deux|trois;
print_r(explode('|', $str, -1));

va afficher :

Array
(
[0] => un
[1] => deux
[2] => trois
)

La valeur "un" sera le résultat de ta fonction fct_string_before, la valeur "deux" sera le résultat de ta fonction fct_string_between et la valeur "trois" sera le résultat de ta fonction fct_string_after.

Et si tu tiens à avoir exactement 3 valeurs résultats (car on peut en avoir plus de 3), lis la doc jusqu'au bout et tu verras qu'un parametre optionnel supplémentaire limit te permet de spécifier le nb de résultat voulus.

Exemple:

$str = 'un|deux|trois|quatre';
print_r(explode('|', $str, 3));

va afficher

Array
(
[0] => un
[1] => deux
[2] => trois|quatre
)

.oOMimiLOo.
Messages postés
10
Date d'inscription
mardi 2 juillet 2002
Statut
Membre
Dernière intervention
3 avril 2007

tu aurais voulu faire un explode a kel niveau?
par ce que explode($chainerechercher, $chainesource)
cela ne va que si ta chainerechercher n'est presente qu'une seule fois dans cette fonction je cherche la premiere occurance de chainerecherche afin de recuperer une chaine qui peut comprendre ou non une autre occurance.

Voila. J'ai peut etre pas vraiment expliquer a koi elle servait vraiment.
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
36
tu va ramer...

faire un explode ça pourait pas etre plus efficace ?

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.