[RESOLU] Recuperer une partie précise d'un champs variable

Eléphanteau du PHP | 25 Messages

21 sept. 2015, 21:06

Bonjour,

je souhaite récupérer "S01E00" dans une variable du style "variablealéatoire1S01E01variablealéatoire2"
Sachant que : Tout est variable sauf "S" et "E", même les numéros sont aléatoires.

Des idées ? pistes ? :)

Mammouth du PHP | 1341 Messages

21 sept. 2015, 21:17

une expression régulière : (S\d\dE\d\d)
si c'est bien un S suivi de 2 chiffres, un E suivi de 2 chiffres

Eléphanteau du PHP | 25 Messages

21 sept. 2015, 22:54

Merci,

j'ai essayé ceci :
<?php

$chaine="/test/S01E01.avi";
$abc= preg_grep("S\d\dE\d\d", array($chaine));
echo htmlspecialchars($abc);

?>
Mais j'ai cette erreur :

Warning: preg_grep() expects parameter 2 to be array, string given in /volume1/web/test.php on line 20

Mauvaise utilisation de preg_grep ? (j'ai essayer de faire $chaine = array("...") et mettre dans le preg : $chaine[0]

mais j’obtiens le meme resultat.

Eléphanteau du PHP | 25 Messages

21 sept. 2015, 23:57

Je viens de remarquer que lorsqu'on mettait une variable array dans le preg_grep : fonctionne pas. (exemple : array($variable)) ).
Mais lorsqu'on entre en dur le parametre : ça fonctionne (exemple array("maison") ).

Seulement je n'ai pas la possibilité de mettre en dur la variable,
quelque chose m'échappe ?

Mammouth du PHP | 737 Messages

22 sept. 2015, 10:01

Salut,

Pour ton exemple je pense que c'est lié au fait que $chaine n'est pas un tableau à la base.

P'tit exemple :
$array = array("/test/S01E01.avi");
var_dump($array);
print_r(preg_grep("/\bavi\b/i",$array));
Si tu as toujours la même chaine tu peux peut être faire des extractions de chaine surtout si le format est le même.

Tu peux également splitter ou faire un explode de ta chaine à partir du point et récupérer les n derniers caractères...

Jette un oeil à la fonction in_array également trop souvent méconnu :)

Plusieurs façons de faire si toutefois j'ai bien compris.

Mega
;)
Dyslexics are teople poo

Eléphanteau du PHP | 25 Messages

22 sept. 2015, 21:56

Bonjour,

si je prend votre fonction telle quelle, j'obtiens :
array(1) { [0]=> string(16) "/test/S01E01.avi" } Array ( [0] => /test/S01E01.avi )
Or je souhaite avoir seulement S01E01.

Et désolé je me suis peut-être mal expliqué, mais la variable est totalement aléatoire :

on peut avoir ceci :
"/test/S01E01.avi"

comme cela :
" /Maison/vacance/piscine-S01E20_720p.mkv"
D'où la difficulté (du moins pour moi :mrgreen: ).

Eléphanteau du PHP | 25 Messages

22 sept. 2015, 22:17

/message à supprimer/
Modifié en dernier par Se7en512 le 22 sept. 2015, 23:12, modifié 1 fois.

Eléphanteau du PHP | 17 Messages

22 sept. 2015, 22:36

Salut, j'ai pas tout compris, tu veux une variable qui soit aléatoire du type :

$variable_alea = variableale1 S variablealea2 E variablealea3 variablealea4 ?

Avec variableale 1, 2, 3 et 4 corresponds à chiffres et lettres ? ou que des chiffres ? que des lettres ? ou /, \ etc etc ?
Tu veux les récupérer sur quelques choses ou juste faire une variable aléatoire de ce type ?

Eléphanteau du PHP | 25 Messages

22 sept. 2015, 22:48

Alors pour :
variableale1 S variablealea2 E variablealea3 variablealea4

variableale1 : aléatoire
variablealea2 : deux chiffres (ex : 02) aléatoire
variablealea2 : deux chiffres (ex : 14) aléatoire
variablealea4 : aléatoire

et je veux recuperer dans une variable "SxxExx" (les "x" pour aléatoire (mais ce sont forcement des chiffres)).


Exemple :
- si j'ai la variable "/test/blablaS03E15blabla2.mp4"

je veux récupérer dans une variable :
"S03E15"

Eléphanteau du PHP | 17 Messages

22 sept. 2015, 23:35

et je veux recuperer dans une variable "SxxExx" (les "x" pour aléatoire (mais ce sont forcement des chiffres)).


Exemple :
- si j'ai la variable "/test/blablaS03E15blabla2.mp4"

je veux récupérer dans une variable :
"S03E15"
Pour ta variable "/test/blablaS03E15blabla2.mp4",
il faut que ça soit obligatoire de la forme : /xxxxx/xxxxxxxSuuEuuxxxxxx/xxxxxxx.mp4 (avec x Chiffres/Lettres et u chiffres) (avec des "/" ?)
ou ça peut être du genre "wwwwwwwwwwwwwwSuuEuuwwwwwwwww" ? (avec w chiffres/Lettres/caractères spéciaux)

Eléphanteau du PHP | 25 Messages

22 sept. 2015, 23:38

J'ai trouvé la solution (désolé je manque d'entrainement pour les expressions régulières) :
$input_line='/test/test1-S01E01_720.avi';
	preg_match("/[S](.)(.)[E](.)(.)/", $input_line, $output_array);
	
	echo $output_array[0];
il me sort bien S01E01