3/5 (8 avis)
Snippet vu 5 454 fois - Téléchargée 21 fois
<?php echo '<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">'; //pratique pour les regexp function accent($chaine) { $accent ="ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûýýþÿ"; $noaccent="aaaaaaaceeeeiiiidnoooooouuuuybsaaaaaaaceeeeiiiidnoooooouuuyyby"; return strtr(trim($chaine),$accent,$noaccent); } if(isset($_FILES["fichier"]["name"])) { //cette partie doit etre grandement amelioree niveau securite if(empty($_FILES["fichier"]["name"])) echo "Veuillez indiquer le chemin du fichier"; $dir="Upload\\"; $fichier=$dir . basename($_FILES["fichier"]["name"]); $tmp=$_FILES["fichier"]["tmp_name"]; $size=$_FILES["fichier"]["size"]; if(!is_uploaded_file($tmp)) { echo " fichier absent"; }; if(!move_uploaded_file($tmp, $fichier)) { echo " pb deplacement "; }; echo "$fichier <br>"; echo "$size <br>"; $com = 'antiword -t "'.$fichier.'" > temp.txt'; echo "$com <br>"; if(exec($com)) echo "conversion reussie"; if($handle = fopen("temp.txt", "rb")) { echo "ouverture reussie <br>"; } //pre-affichage while (!feof($handle)) { $buffer = fgets($handle, 4096); $buffer = preg_replace(array('#[|]#s','#^-#','#^?#','#^[(]#','#^[ ]#'), '', trim($buffer)); $buffer = preg_replace('#([ ][ ]+)#s', ' ', trim($buffer)); $buffer = accent($buffer); echo "ligne : $buffer<br>"; } fclose($handle); if(false !== ($handle = fopen('temp.txt', 'rb'))) { echo "ouverture reussie <br>"; } $j=0; $c=0; $d=0; $k=0; $z=0; $f=0; $societe=""; $prenom=""; $nom=""; $adresse=""; $ville=""; $cp=""; $divers=""; $taille=0; $age=0; $l=false; $testVille=false; $testNom=false; $testCiv=false; $testEmail=false; $testAdresse=false; $testFixe=false; $testPort=false; $testCp=false; $testAge=false; $testExp=false; $testForm=false; while (feof($handle)===false) { if($testForm==true && $testExp==false && $z<=250){ $z++; }else{ $buffer = fgets($handle, 4096); //on vire les saloperies de debut de ligne $buffer = preg_replace(array('#[|]#s','#^-#','#^?#','#^[(]#','#^[ ]#'), '', trim($buffer)); //on remplace les espaces mutliples $buffer = preg_replace('#([ ][ ]+)#s', ' ', trim($buffer)); $buffer = accent($buffer); } //Si vous avez du mal a voir a quoi sert la regexp, regardez le nom du booleen if(preg_match('#(M(onsieur|adame|mademoiselle|r|d|lle))#',$buffer,$out) !==0 && $testCiv===false) { $civilite = $out[0]; print_r($out); echo "<br>"; echo $buffer = str_replace($civilite, '', $buffer); echo "<br>civilite : $civilite<br>"; $testCiv=true; echo"je suis passe dans la boucle civilite<br>"; } if(preg_match('#[A-Z]:alpha:+(?:\s)?[-?]?(?:\s)?([A-Z]:alpha:+)?(?:\s)?([A-Z]:alpha:+)?(?:\s)?[-?]?(?:\s)?[A-Z]:alpha:+\s*#',$buffer,$out) !==0 && $testNom===false) { $res = preg_split('# #', $buffer, -1, PREG_SPLIT_NO_EMPTY); $testNom=true; switch (count($res)) { case (2) : $prenom = $res[0]; $nom = $res[1]; break; case (3) : $prenom = $res[0]; $nom = $res[1].' '.$res[2]; break; case (4) : if ( $res[1]=="-" || $res[1]=="?") { $prenom = $res[0].' '.$res[1].' '.$res[2]; $nom = $res[3]; break; } if ( $res[2]=="-" || $res[2]=="?") { $prenom = $res[0]; $nom = $res[1].' '.$res[2].' '.$res[3]; break; }else{ $prenom = $res[0]; $nom = $res[1].' '.$res[2].' '.$res[3]; break; } case (5) : if ($res[1]=="-" || $res[1]=="?") { $prenom = $res[0].' '.$res[1].' '.$res[2]; $nom = $res[3].' '.$res[4]; break; } if ( $res[3]=="-" || $res[3]=="?") { $prenom = $res[0]; $nom = $res[1].' '.$res[2].' '.$res[3].' '.$res[4]; break; } case (6) : $prenom = $res[0].' '.$res[1].' '.$res[2]; $nom = $res[3].' '.$res[4].' '.$res[5]; break; } echo "nom : $nom<br>"; echo "prenom : $prenom<br>"; } if(preg_match('#([0-9]{1,3})[, ]?(?:[a-zA-Z]{1,3})?[, ]?(rue|avenue|boulevard|impasse|cours)(?:,)?(?:\s)?([-?\'0-9[:alpha:]](?:\s)?)+\s*#i', $buffer, $out) !==0 && $testAdresse===false) { $adresse = $out[0]; echo "adresse : $adresse<br>"; $testAdresse=true; } if(preg_match('#(([0-9](?:\s)?){5})\s([-?[:alpha:]](?:\s)?)+\s*#', $buffer, $out) !==0 && $testCp===false) { $res = preg_split('# #', $buffer, -1, PREG_SPLIT_NO_EMPTY); $testCp=true; $pm = sizeof($res); for ($i=0; $i<=sizeof($res)-1; $i++) { if (preg_match('#[0-9]{2}|[0-9]{3}#', $res[$i], $out) !==0 && $j<=2) { $cp .= $res[$i]; if(preg_match('#[0-9]{5}#', $cp, $out)) { $j=3; } $j++; } if (preg_match('#((:alpha:(?:\s)?)[-?]?(?:\s)?)+#', $res[$i], $out) !==0 && $testVille===false) { $ville .= $out[0].' '; } } echo "ville : $ville<br>"; echo "cp : $cp<br>"; } if(preg_match('#[a-z0-9]([-_.]?[a-z0-9])+@[a-z0-9]([-_.]?[a-z0-9])+\.[a-z]{2,5}$#ixm', $buffer, $out) !==0 && $testEmail===false) { $email = $out[0]; echo " email : $email<br>"; $testEmail = true; } if(preg_match('#[0][1234589][- \.?]?([0-9][0-9][- \.?]?){4}#', $buffer, $out) !==0 && $testFixe===false) { $telFixe = $out[0]; echo "fix : $telFixe<br>"; $buffer = str_replace($telFixe, '', trim($buffer)); $testFixe=true; } if(preg_match('#[0][6][- \.?]?([0-9][0-9][- \.?]?){4}#', $buffer, $out) !==0 && $testPort===false) { $telPort = $out[0]; echo "portable : $telPort<br>"; $buffer = str_replace($telPort, '', trim($buffer)); $testPort=true; } if(preg_match('#(^(age :[ ]*))?(^([0-9]{2}))[ ][a][n][s][ ]*#i',$buffer, $out) !==0 && $testAge===false) { if(preg_match('#exp(é|e)rience#', $buffer, $out)){ }else{ echo "bufAge : $buffer<br>"; print_r($out); $testAge=true; $res = preg_split('# #', $buffer, -1, PREG_SPLIT_NO_EMPTY); $age = date('Y') - $res[0]; echo "<br>age : $age<br>"; } } if(preg_match('#((Né)[e]?)?[ ](le|:|en)?[ ]([0-2][0-9]|[3][0-1]|[0-9])[-?/ ]([0][1-9]|[1][0-2])?(:alpha:+)?[-?/ ]([0-9]{2,4})#ixm', $buffer, $out) !==0 && $testAge===false) { $buffer = strtolower($buffer); $buffer = accent($buffer); $testAge=true; $taille=sizeof($out); $pos = 3; for ($i=0; $i<=$taille-1; $i++) { if(preg_match('#:alpha:#i', $out[$i], $res)) { $out[$i] = strtolower($out[$i]); $out[$i] = accent($out[$i]); //un preg_replace a venir switch($out[$i]) { case('janvier') : { $out = str_replace($out[$i], '01', $out);$pos = 2;break; } case('fevrier') : { $out = str_replace($out[$i], '02', $out);/*echo "<br>apres : ";print_r($out);echo"<br>"*/;$pos = 2;break; } case('mars') : { $out = str_replace($out[$i], '03', $out);$pos = 2;break; } case('avril') : { $out = str_replace($out[$i], '04', $out);$pos = 2;break; } case('mai') : { $out = str_replace($out[$i], '05', $out);$pos = 2;break; } case('juin') : { $out = str_replace($out[$i], '06', $out);$pos = 2;break; } case('juillet') : { $out = str_replace($out[$i], '07', $out);$pos = 2;break; } case('aout') : { $out = str_replace($out[$i], '08', $out);$pos = 2;break; } case('septembre') : { $out = str_replace($out[$i], '09', $out);$pos = 2;break; } case('octobre') : { $out = str_replace($out[$i], '10', $out);$pos = 2;break; } case('novembre') : { $out = str_replace($out[$i], '11', $out);$pos = 2;break; } case('decembre') : { $out = str_replace($out[$i], '12', $out);$pos = 2;break; } } } } if(preg_match('#\b[0-9]\b#', $out[$taille-4], $res)) $out[$taille-4] = '0'.$out[$taille-4]; if(preg_match('#([0-9]{4})#',$out[$taille-1], $res)) { $age = $out[$taille-1].'-'.$out[$taille-$pos].'-'.$out[$taille-4]; $buffer = str_replace($out,'',trim($buffer)); }else{ if(preg_match('#([0-9]{2})#',$out[$taille-1], $res)) { $age = '19'.$out[$taille-1].'-'.$out[$taille-$pos].'-'.$out[$taille-4]; $buffer = str_replace($out,'',trim($buffer)); } } echo "age : $age<br>"; } $buffer = accent($buffer); if(preg_match('#((experience[s]?|parcours)[ ](professionnel(le)?[s]?))#i', $buffer, $out) && $testExp==false ) { while(preg_match('#^([ ]*[F](ormation|ORMATION))|([L](angues|ANGUES))|^([D](ivers|IVERS))\b|([L](oisirs|OISIRS))|([D](iplome|IPLOME)[sS]?)#', $buffer, $out) == 0 ) { $buffer = fgets($handle, 4096); $buffer = preg_replace(array('#[|]#s','#^-#','#^?#','#^[(]#','#^[ ]#'), '', trim($buffer)); $buffer = preg_replace('#([ ][ ]+)#s', ' ', trim($buffer)); $buffer = accent($buffer); if(feof($handle)) break; // quand je met ca dans le while ca ne marche jamais -> ??? if(preg_match('#(([0-2][0-9]|[3][0-1]|[0-9])?[-?/]?([0][1-9]|[1][0-2])?(:alpha:+)?[-?/]?([1-2]([9]|[0])[0-9]{2})|(([0-2][0-9]|[3][0-1]|[0-9])?[-?/]?([0][1-9]|[1][0-2])[-?/]?([0-9]{2})))#ixm', $buffer, $out) !==0 && $c<=2) { $testExp=true; $c++; $xdeb = preg_replace('#/aà?#', '-', trim($out[0])); $buffer = str_replace($out[0], '', trim($buffer)); if(preg_match('#(([0-2][0-9]|[3][0-1]|[0-9])?[-?/ ]?([0][1-9]|[1][0-2])?(:alpha:+)?[-?aà/ ]?([1-2]([9]|[0])[0-9]{2})|(([0-2][0-9]|[3][0-1]|[0-9])?[-?/]?([0][1-9]|[1][0-2])[-?/]?([0-9]{2})))#ixm', $buffer, $out) !==0 ) { $xfin = preg_replace('#(a|à)#', '', trim($out[0])); $xfin = preg_replace('#/aà?#', '-', trim($out[0])); $buffer = str_replace(trim($out[0]), '', trim($buffer)); }else{ if(preg_match('#((a|à)(\s)(ce)(\s)(jour))|(depuis)#i', $buffer, $out) || $c==1) { $xfin = Date('m').'-'.Date('Y'); if(isset($out[0])) $buffer = str_replace($out[0], '', trim($buffer)); }else{ $xfin=$exp[$c-1][1]; } } $xfin=preg_replace('#^[-?.a:]#', '', $xfin); $exp[$c][1]=$xdeb; $exp[$c][2]=$xfin; while(preg_match('#([0-2][0-9]|[3][0-1]|[0-9])?[-?/ ]?([0][1-9]|[1][0-2])?(:alpha:+)?[-?aà/ ]?([1-2]([9]|[0])[0-9]{2})#ixm', $buffer, $out) == 0 && $k<=2 && $l===false ) { if(preg_match('#[A-Z]([[:alpha:]\']+[ ]?)+#i', $buffer, $out) !==0) { $poste[$k] = $out[0]; $buffer = str_replace($out[0], '', trim($buffer)); $k++; } if(preg_match('#[A-Z](:alpha:*[.\']?[ ]?[:]?[ ]?:alpha:+[.\']?[ ]?)+#', $buffer, $out) !==0) { $societe[$k] = $out[0]; $buffer = str_replace($out[0], '', trim($buffer)); $l=true; }else $l=true; } $l=false; } } if(isset($poste)){ echo"<br>postes : "; print_r($poste); } if(isset($societe)){ echo"<br>societe : "; print_r($societe); } if(isset($exp)){ echo"<br>dates : "; print_r($exp); echo"<br>"; } } $k=0; $l=false; if(preg_match('#(^[ ]?[F](ormation|ORMATION))|(^[D](iplome)[s]?|IPLOME[S]?)#', $buffer, $out) || preg_match('#DIPLOME#', $buffer, $out) && $testForm==false) { while((preg_match('#(langue[s]?)|((expérience[s]?|parcours)[ ](professionnel(le)?[s]?))|\b(divers)\b|(loisirs)|(informatique)|((langue)[s]?)#i', $buffer, $out) == 0) ) { if(feof($handle)) break; $buffer = fgets($handle, 4096); $buffer = preg_replace(array('#[|]#s','#^-#','#^?#','#^[(]#','#^[ ]#'), '', trim($buffer)); $buffer = preg_replace('#([ ][ ]+)#s', ' ', trim($buffer)); $buffer = accent($buffer); if(preg_match('#(([0-2][0-9]|[3][0-1]|[0-9])[-?/])?([0][1-9]|[1][0-2])?(:alpha:+)?[-?/a]?([1-2]([9]|[0])[0-9]{2})#ixm', $buffer, $out) !==0 && $d<=2) { $testForm=true; $d++; $fdeb = preg_replace('#/aà?#', '-', trim($out[0])); $buffer = str_replace($out[0], '', trim($buffer)); if(preg_match('#([0-2][0-9]|[3][0-1]|[0-9])?[-?/ ]?([0][1-9]|[1][0-2])?(:alpha:+)?[-?aà/ ]?[1-2]([9]|[0])[0-9]{2}#ixm', $buffer, $out) !==0 ) { $ffin = preg_replace('#(a|à)#', '', trim($out[0])); $ffin = preg_replace('#/aà?#', '-', trim($out[0])); $buffer = preg_replace('#^[ ](a|à)[ ]#', '', $buffer); $buffer = str_replace(trim($out[0]), '', trim($buffer)); }else{ if(isset($out[0])) $buffer = str_replace($out[0], '', trim($buffer)); } if(isset($ffin)) $ffin=preg_replace('#^[-?.a:]#', '', $ffin); $form[$d][1]=$fdeb; if(isset($ffin)) $form[$d][2]=$ffin; $fdeb=""; unset($ffin); while(preg_match('#([0-2][0-9]|[3][0-1]|[0-9])?[-?/ ]?([0][1-9]|[1][0-2])?(:alpha:+)?[-?aà/ ]?([1-2]([9]|[0])[0-9]{2})#ixm', $buffer, $out) == 0 && $k<=2 && $l===false ) { if(preg_match('#([A-Z][.]?[[:alpha:]\']+[.]?[ ]?[:]?[ ]?[[:alpha:]\']+[.]?[ ]?)+#i', $buffer, $out) !==0) { $dipl[$k] = $out[0]; $buffer = str_replace($out[0], '', trim($buffer)); $k++; } if(preg_match('#[A-Z](:alpha:*[.\']?[ ]?[:]?[ ]?:alpha:+[.\']?[ ]?)+#', $buffer, $out) !==0) { $etab[$k] = $out[0]; $buffer = str_replace($out[0], '', trim($buffer)); $l=true; }else break; } $l=false; } } if(isset($dipl)) { echo"<br>diplomes : "; print_r($dipl); }else echo "<br>no diplomes found<br>"; if(isset($etab)) { echo"<br>Etablissements : "; print_r($etab); }else echo "<br>no etablissement found<br>"; if(isset($form)) { echo"<br>dates : "; print_r($form); }else echo "<br>no dates diplomes found<br>"; } if(preg_match('#anglais|allemand|italien|espagnol|portugais|arabe|chinois#i', $buffer, $out)) { $f++; $langue[$f]=$buffer; } if(preg_match('#([D](ivers|IVERS))\b#', $buffer, $out)) { while(preg_match('#.+#', $buffer, $out)==true){ if(feof($handle)) break; $divers.="$buffer<br>"; $buffer = fgets($handle, 4096); } } } if(isset($langue)){ echo"langues : "; print_r($langue); echo"<br>"; } if(isset($divers)) echo "<br>$divers"; fclose($handle); } ?> <html> <head><title>Formulaire CV </title></head> <body> <br> <form method="POST" action="test.php" name="formulaire" enctype="multipart/form-data"> <br> <div class="block"> <h2><span>Envoyez votre CV</span></h2> <div class="box"> <table> <tr><td> <input type="file" name="fichier"> <br> <input type="submit" name="valider"> <br> <tr><td> </table> </div> </div> </form> </body></html>
16 mai 2007 à 08:50
9 mai 2007 à 08:43
5 mai 2007 à 23:48
pour l'adresse mail, il est préférable de tester si le 1er caractère est bien un caractère alphanum.
Si cette vérification n'est pas faite, ton masque matchera les adresses de ce type:_____@------.com.
Dans le masque suivant, il n'y a que les adresses classiques qui sont acceptés.
'#[a-z0-9]([-_.]?[a-z0-9])+@[a-z0-9]([-_.]?[a-z0-9])+\.[a-z]{3,5}#i'
Bonne chance.
4 mai 2007 à 17:18
un peu de lecture...
http://fr2.php.net/manual/fr/function.escapeshellarg.php
http://fr2.php.net/manual/fr/function.escapeshellcmd.php
Sinon coté syntaxe du peu que j'ai vu il serait bien d'utiliser les simples quotes et la concaténation plutôt que les doubles quotes... pour tes boucles for() à partir du moment où ton tableau ou ta chaine n'est pas modifié en cour de boucle fais ton sizeof ou ton count à l'initialisation de ta boucle... pas dans l'instruction de contrôle... et préfère également la préincrémentation pour la dernière instruction... exemple...
for ($i=0,$max=count($monTableau); $i<=$max; ++$i)
Les expressions régulières c'est bien... en abuser ça craint... .. .
$telPort = "#$telPort#s";
$buffer preg_replace("$telPort", " ", trim($buffer));
>
$buffer = str_replace($telPort, ' ', trim($buffer));
-------------
$buffer = preg_replace('#([[:space:]][[:space:]]+)#s', ' ', trim($buffer));
$buffer preg_replace('#[|]#s', ' ', trim($buffer));
>
$buffer = preg_replace(
array(
'#([[:space:]][[:space:]]+)#s',
'#[|]#s'
),
' ',
trim($buffer)
);
---------------------
$taille = sizeof($res);
$testN=true;
switch ($taille) {
tu ne réutilise $taille nul part en dehors du switch... inutile d'encombrer la mémoire serveur pour rien...
$testN=true;
switch (sizeof($res)) {
d'ailleurs utilise plutôt les fonctions originale plutôt que leur alias... tu y gagne en rapidité et tu est plus sur de la compatibilité de ton code vis a vis des futures versions de php... donc...
$testN=true;
switch (count($res)) {
utilise des comparaisons typées... tu y gagne en perf et tu est sur du contenu de ta variable...
while (!feof($handle))
===>
while (feof($handle) === false)
-----
if($handle fopen("temp.txt", "rb")) {
>
if(false !($handle fopen('temp.txt', 'rb'))) {
---
if(preg_match('#...#',$buffer,$out) && $testC false) {
>
if(preg_match('#...#',$buffer,$out) !0 && $testC false) {
Voili voilou dans un premier temps... .. .
@ tchaOo°
4 mai 2007 à 14:44
A part ca si vous pouviez me faire des suggestions qui me ferait avancer dans l'amelioration de mon code (structure, construction des regexp, proprete (surtout le passage $j=3 du code postal) ) ce serait top ^^
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.