Page 1 sur 1

Recuperer une partie précise d'un champs variable

Posté : 21 sept. 2015, 21:06
par Se7en512
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 ? :)

Re: Recuperer une partie précise d'un champs variable

Posté : 21 sept. 2015, 21:17
par or 1
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

Re: Recuperer une partie précise d'un champs variable

Posté : 21 sept. 2015, 22:54
par Se7en512
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.

Re: Recuperer une partie précise d'un champs variable

Posté : 21 sept. 2015, 23:57
par Se7en512
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 ?

Re: Recuperer une partie précise d'un champs variable

Posté : 22 sept. 2015, 10:01
par Megadeth
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
;)

Re: Recuperer une partie précise d'un champs variable

Posté : 22 sept. 2015, 21:56
par Se7en512
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: ).

Re: Recuperer une partie précise d'un champs variable

Posté : 22 sept. 2015, 22:17
par Se7en512
/message à supprimer/

Re: Recuperer une partie précise d'un champs variable

Posté : 22 sept. 2015, 22:36
par hyflender
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 ?

Re: Recuperer une partie précise d'un champs variable

Posté : 22 sept. 2015, 22:48
par Se7en512
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"

Re: Recuperer une partie précise d'un champs variable

Posté : 22 sept. 2015, 23:35
par hyflender
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)

Re: Recuperer une partie précise d'un champs variable

Posté : 22 sept. 2015, 23:38
par Se7en512
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