Précédent   Forum des professionnels en informatique > PHP > Langage > Regex
Regex Forum d'entraide sur les expressions rationnelles PHP. Avant de poster -> FAQ regex, Cours de regex et Sources de regex
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/05/2008, 17h18   #1
Nouveau Membre du Club
 
Inscription : décembre 2006
Messages : 102
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 102
Points : 28
Points : 28
Par défaut Regex ou autre pour capture de texte ?

Salut à tous !

Je cherche comment, à partir d'une chaîne, récupérer le contenu de balises .

Exemple : [titre]mon titre[/titre]

Devrait me retourner : mon titre

J'ai pensé aux regex que je n'ai pour le même que très peu utilisé... Quelle fonction choisir ? Avez-vous un exemple utilisant une regex à me proposer correspondant à mon cas ?

Merci !
oneTime est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/05/2008, 17h56   #2
Membre éprouvé
 
Développeur Web
Inscription : avril 2005
Messages : 395
Détails du profil
Informations personnelles :
Âge : 28

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : avril 2005
Messages : 395
Points : 479
Points : 479
Salut,
je te propose cela :
Code php :
1
2
3
4
5
6
7
 
$subject = '[titre]mon titre[/titre]';
$pattern = '`\[[^]]+\](.+)\[[^]]+\]`i';
if(preg_match($pattern, $subject, $matches))
{
   print_r($matches);	
}

qui renvoi :
Array
(
[0] => [titre]mon titre[/titre]
[1] => mon titre
)
__________________
Zend PHP5 Certification
MySQL 4 Core Certification
Gats est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/05/2008, 18h00   #3
Nouveau Membre du Club
 
Inscription : décembre 2006
Messages : 102
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 102
Points : 28
Points : 28
Parfait, merci !
oneTime est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/05/2008, 18h46   #4
Nouveau Membre du Club
 
Inscription : décembre 2006
Messages : 102
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 102
Points : 28
Points : 28
Encore une chose... J'ai ajusté à mon cas :

Code :
1
2
3
4
5
6
7
8
9
10
 
$save = array();
 
foreach ($this->chaine_html as $value) {
	$subject = $value;
	$pattern = '`\[[^]]+\](.+)\[[^]]+\]`i';
		if(preg_match($pattern, $subject, $matches)) {
			$save[] = $matches[1];	
		}
}
Je stocke en fait dans des fichiers texte des balises contenant du texte... Le contenu du fichier texte dépend de ce que l'internaute a soumis via un formulaire.
Mais voilà, dans le cas où il y a un retour à la ligne qui a été fait lors de la rédaction du commentaire par l'internaute, le code ne correspond plus...

exemple : [commentaire]blabla bla\nbla[/commentaire]

Il ne me trouve ni la balise ni le contenu...


EDIT : résolu après ajout d'un str_replace pour remplacer les "\n" par "<br />"
oneTime est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h53.


 
 
 
 
Partenaires

Hébergement Web