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 01/06/2007, 16h18   #1
Futur Membre du Club
 
Inscription : mai 2007
Messages : 25
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 25
Points : 19
Points : 19
Par défaut Regex et split

Bonjour,

Je vous explique un peu ce que je veux faire, en fait je voudrais splité une page web qui propose des activitées suivant le jour.

Code :
<strong><font size="+2"> dimanche 24 juin
mais dès fois l'évènement est sur 2 jours comme ceci

Code :
1
2
3
<strong><font size="+2">samedi 30</font></strong> 
                        <strong><font size="+2"> 
             juin au dimanche 1 juillet            </font></strong>
Donc ce que je pensais faire c'est splité et ensuite traité les évènements 1 à 1

Code :
$listeEvements = split('<strong><font size=\"\+2\">', $pageEvenements);
Et ensuite traité les évènements de chaque jour.

Bien sûr dans mon cas là il récupère bien dans le premier cas mais quand l'évènement est sur 2 jours ça ne fonctionne pas.
J'ai remarqué que quand l'évènement était sur 2 jours, il n'y a pas d'espace après la fin de la balise <font size="+2">

J'ai essayé diverse méthodes mais sans grand succès.(notamment avec preg_split() )

Code :
1
2
3
$separateurs = '(<strong><font size=\"\+2\">[\s]?)';
 
$listeEvenements = preg_split($separateurs, $pageEvenements);
Pourriez-vous me donner quelques conseils ?

Merci d'avance.

EDIT :

Je viens tout juste de réussir à faire quelques chose.

Code :
$separateurs = '(<strong><font size=\"\+2\">[\s]?[\w])';
Par contre je perds la première lettre de chaque jour.

Bon comme je perds une lettre j'ai fais une autre fonction

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function rechercheJourSemaine($strCorrompu){
 
$jourDeLaSemaine = array("lundi","mardi","mercredi","jeudi","vendredi","samedi","dimanche");
 
$resultat = false;
$arret = false;
$i = 0;
 
while(($i<= sizeof($jourDeLaSemaine)) && ($arret == false)){
	if(preg_match('/'.$strCorrompu.'/',$jourDeLaSemaine[$i]))
	{
		$arret = true;
		$resultat = $jourDeLaSemaine[$i];
	}
	else
		$i++;
}
return($resultat);
 
}
Bonne continuation
Gamez29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/06/2007, 11h53   #2
Membre chevronné
 
Avatar de Korko Fain
 
Étudiant
Inscription : août 2005
Messages : 632
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : août 2005
Messages : 632
Points : 632
Points : 632
A ce que je lit,

Tu fais cette regex là :
Code :
preg_match_all('#<strong><font(?: .*)?>(.*)</font></strong>#Us', $pageEvenements, $matches);
Et pour chaque $matches, si ce test est bon
Code :
if preg_match('#\w+ \d{1,2}$#', $match)
c'est que tu as un évenement sur 2 jours. Et donc il faut que tu prenne le $matches suivant pour obtenir la date complete.

sinon, c'est soir un evenement sur 1 jour soit la continuité d'un évenement de 2 jours.

Tu peux savoir si c'est un évenement d'1 jour avec cette regex :
Code :
if preg_match('#\w+ \d{1,2} \w+#', $match)
Korko Fain 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 07h20.


 
 
 
 
Partenaires

Hébergement Web