par
Gofromiel » 03 déc. 2007, 06:07
Ralala, je ne comprends franchement rien aux expressions régulière, dès qu'il s'agit de recherche un peu compliqué je suis complètement perdu
J'aimerai récupérer les membres de l'expression "2007/06/03/ta_mere_en_short" où chaque membre peut être optionnel. J'ai *absolument* besoin d'utiliser preg_match() parce que j'utilise des expressions régulières pour reconnaitre les adresses et servir les bons documents, en récupérant les arguments au passage... Bref, voici mon piètre bout de code :
$strings = array
(
'2007',
'2007/06',
'2007/06/03',
'2007/06/03/ta_mere_en_short'
);
$pat = '#(\d{4})/(\d{2})/(\d{2})/([\w]+)|(\d{4})/(\d{2})/(\d{2})|(\d{4})/(\d{2})|(\d{4})#';
foreach ($strings as $str)
{
$rc = preg_match($pat, $str, $m);
echo "<pre>result: $rc, " . print_r($m, true) . '</pre>';
}
Avec tout ce bordel j'ai le résultat suivant :
Code : Tout sélectionner
result: 1, Array
(
[0] => 2007
[1] =>
[2] =>
[3] =>
[4] =>
[5] =>
[6] =>
[7] =>
[8] =>
[9] =>
[10] => 2007
)
result: 1, Array
(
[0] => 2007/06
[1] =>
[2] =>
[3] =>
[4] =>
[5] =>
[6] =>
[7] =>
[8] => 2007
[9] => 06
)
result: 1, Array
(
[0] => 2007/06/03
[1] =>
[2] =>
[3] =>
[4] =>
[5] => 2007
[6] => 06
[7] => 03
)
result: 1, Array
(
[0] => 2007/06/03/ta_mere_en_short
[1] => 2007
[2] => 06
[3] => 03
[4] => ta_mere_en_short
)
Pas trop ce que j'espère
L'idéal serait d'obtenir un tableau comme le dernier où les arguments optionnels seraient simplement oubliés, mais comme vous pouvez le voir avec le premier tableau, tous les masques sont ajoutés... je ne sais pas quoi faire. Je n'ai rien compris au conditionnel, alors j'implore votre aide éclairée et sympathique.
Merci !!
PS: Sinon, je vais être obligé de me suicider aux petits suisses périmés... yeurk !
Ralala, je ne comprends franchement rien aux expressions régulière, dès qu'il s'agit de recherche un peu compliqué je suis complètement perdu :-(
J'aimerai récupérer les membres de l'expression "2007/06/03/ta_mere_en_short" où chaque membre peut être optionnel. J'ai *absolument* besoin d'utiliser preg_match() parce que j'utilise des expressions régulières pour reconnaitre les adresses et servir les bons documents, en récupérant les arguments au passage... Bref, voici mon piètre bout de code :
[php]
$strings = array
(
'2007',
'2007/06',
'2007/06/03',
'2007/06/03/ta_mere_en_short'
);
$pat = '#(\d{4})/(\d{2})/(\d{2})/([\w]+)|(\d{4})/(\d{2})/(\d{2})|(\d{4})/(\d{2})|(\d{4})#';
foreach ($strings as $str)
{
$rc = preg_match($pat, $str, $m);
echo "<pre>result: $rc, " . print_r($m, true) . '</pre>';
}
[/php]
Avec tout ce bordel j'ai le résultat suivant :
[code]
result: 1, Array
(
[0] => 2007
[1] =>
[2] =>
[3] =>
[4] =>
[5] =>
[6] =>
[7] =>
[8] =>
[9] =>
[10] => 2007
)
result: 1, Array
(
[0] => 2007/06
[1] =>
[2] =>
[3] =>
[4] =>
[5] =>
[6] =>
[7] =>
[8] => 2007
[9] => 06
)
result: 1, Array
(
[0] => 2007/06/03
[1] =>
[2] =>
[3] =>
[4] =>
[5] => 2007
[6] => 06
[7] => 03
)
result: 1, Array
(
[0] => 2007/06/03/ta_mere_en_short
[1] => 2007
[2] => 06
[3] => 03
[4] => ta_mere_en_short
)
[/code]
Pas trop ce que j'espère :-(
L'idéal serait d'obtenir un tableau comme le dernier où les arguments optionnels seraient simplement oubliés, mais comme vous pouvez le voir avec le premier tableau, tous les masques sont ajoutés... je ne sais pas quoi faire. Je n'ai rien compris au conditionnel, alors j'implore votre aide éclairée et sympathique.
Merci !!
PS: Sinon, je vais être obligé de me suicider aux petits suisses périmés... yeurk !