Accueil > > > REPERAGE D'INFORMATIONS PERSONNELLES AVEC REGEXP
REPERAGE D'INFORMATIONS PERSONNELLES AVEC REGEXP
Information sur la source
Description
Ces regexp ont ete developpees pour une recherche d'informations personnelles dans un cv donc beaucoup de mise en forme differentes a gerer. Vous y trouverez des regpex pour : nom, prenom civilite adresse code postal ville email numero de telephone (fixe et portable) age experiences professionnelles (poste et societe) formation (diplome, etablissement) langues (a ameliorer) divers Apres plusieurs affinages voila le resultat, si vous avez des commentaires/conseils constructifs j'en serais ravi.
Source
- <?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>
<?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>
Conclusion
J'ai galere avec l'age et l'adresse mais c'est regle, ce sont les experiences et la formation qui ont ete les plus dures =) Pour ceux que ca interesse le logiciel gratuit "antiword" pour la conversion de document word est porte sous windows, comme vous pouvez le voir il fonctionne en ligne de commande donc parfait a utiliser dans une page php. Toute remarque sur la structure et la proprete du code est egalement bienvenue, plus particulierement la securite dans laquelle je n'y connais rien. Juste je vais mettre en place un systeme pour ne pas accepter des fichiers trop volumineux. Voila j'espere en aider certains et recevoir des conseils. ++
Historique
- 04 mai 2007 13:40:15 :
- C'est mon premier post j'ai pas fait attention a tout desole.
D'autres modifs a effectuer ?
- 04 mai 2007 13:46:37 :
- Identation
- 04 mai 2007 15:12:21 :
- Ajout de code
- 04 mai 2007 15:49:15 :
- Amelioration regexp date
- 15 mai 2007 17:59:09 :
- Beaucoup d'amelioration et encore d'autres a venir
- 16 mai 2007 08:48:01 :
- Ameliorations genrales, ajout du reperage des experiences, formations, langues, divers.
Sources de la même categorie
RÉCUPÉRER LES MINIATURES D'UNE VIDÉO YOUTUBERÉCUPÉRER LES MINIATURES D'UNE VIDÉO YOUTUBE Le code est simple, il permet depuis une url youtube de récupérer son identifiant et de se connecter au serveur de miniatures pour en récupérer les im...
par tefa24600
CONVERTISSEUR DE NOMBRES EN TEXTECONVERTISSEUR DE NOMBRES EN TEXTEQu'est-ce ? Un convertisseur de nombre en texte.
Ses particularités?
- pas de limitation sur la taille du nombre (traitement en string, et non en ...
par macruz
CODAGE TEXTE >HTML, ISO, SPECIALCHARS, URL ET DECODAGECODAGE TEXTE >HTML, ISO, SPECIALCHARS, URL ET DECODAGECe script php permet, comme son nom l'indique de coder un texte pour remplacer les caractères spéciaux, ou apprendre à comprendre les htmlentities, sp...
par Salva9473
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Problèmes formulaire [ par JTR ]
Bien le bonjour tous :)Alors je veux faire un formulaire de modification d'informations. ( Nom, prénom, adresse ...)Les informations sont dans une bas
récupération d'informations contenu dans une page web [ par malice120 ]
Est t'il possible de récupérer des informations contenu dans une page web dans une base de donnée?bonne annee 2003 a tous
Besoin de conseils [ par Spoutnik ]
Salut,Je suis étudiant et je voudrais savoir ou avoir des informations sur les differents systemes de bases de donnees, que ce soit en environnement l
serveur d'informations et d'actualités [ par hackoo ]
Salut, je cherche un script complet pour la création d'un seveur d'informations et d'actualités dans lequel le lecteur peut devenir acteur ,avec la po
Fichier attaché [ par moussaiba ]
J'ai un problème avec un fichier attaché.je vous explique le problème:j'ai deux pages, page1.php et page2.php.Sur page1.php je saisie des informations
Ouverture de fichiers distants impossible [ par BSide ]
Bonjour,je rencontre un pbl que g du mal à dépatouiller.Voici le topo :- mon appli (un intranet) se trouve sur un serveur A. Elle permet entre autre d
problème avec les session [ par meridius ]
Hello,Voilà, j'ai un problème avec ma session... la création se déroule bien, mais quand je navigue dans ma session page par page et que soudainement
Transfert d'informations d'une page à l'autre. [ par BRAUKRIS ]
KrisTout d'abord merci à ceux qui prendront le temps de lire mon message.J'ai besoin pour mon application d'ouvrir une nouvelle fenêtre, indépendammen
Problème de transmission d'informations [ par dodlintrepide ]
Bonjour,j'ai une page sur laquelle se trouve un formulaire avec plusieurs liste déroulante. Ces listes déroulantes sont renseignées via des tables sto
renvoie des valeurs d'un formulaire... [ par jojomillenium ]
Salut!!!J'aimerai savoir si il est possible d'eviter ceci lorsque qu'on essait de revenir en arriere sur une page :"Avertissement : expiration du déla
|
Derniers Blogs
CSS CONTENT STATE SELECTORS (PERSONNAL DRAFT)CSS CONTENT STATE SELECTORS (PERSONNAL DRAFT) par FREMYCOMPANY
Bonjour à tous, Je viens de publier une proposition comprenant 5 pseudo-classes pour le CSS Working Group ayant trait à l'état de chargement d'un élément (ex: IMG,VIDEO,AUDIO,OBJECT pour l'HTML.). Si le c½ur vous en dit, vous pouvez retrouver cette p...
Cliquez pour lire la suite de l'article par FREMYCOMPANY MBA : POURQUOI FAIRE ET COMMENT LE CHOISIR ?MBA : POURQUOI FAIRE ET COMMENT LE CHOISIR ? par ROMELARD Fabrice
Formation initiale Durant la formation, le découpage classique est le suivant (je donnerai les équivalences Suisse lorsque je les connaîtrais) : Ecole primaire jusqu'au Collège : Formation générale permettant d'obtenir les méthodes...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice Y'A DES ERREURS QUI PEUVENT RENDRE LE DéVELOPPEUR VIOLENTY'A DES ERREURS QUI PEUVENT RENDRE LE DéVELOPPEUR VIOLENT par Aleks
Quand on a ce genre d'erreur sans log :
Et bas on a juste envie de choper le gas de Microsoft qu'a développé ça et lui foutre des baffes de Coboye ! ...
Cliquez pour lire la suite de l'article par Aleks [HYPER-V 3] PRéSENTATION DES COMMANDLETS POWERSHELL[HYPER-V 3] PRéSENTATION DES COMMANDLETS POWERSHELL par Pierrick CATRO-BROUILLET
Avec la sortie prochaine de la Beta Consumer Preview de Windows 8, j'avais envie de revenir sur une des fonctionnalités que j'attends le plus et que, en bon geek que je suis, j'utilise déjà : Hyper-V 3 ainsi son module PowerShell.
Il y a déjà pléthor...
Cliquez pour lire la suite de l'article par Pierrick CATRO-BROUILLET IIS7 - COMPRESSION GZIPIIS7 - COMPRESSION GZIP par cyril
La compression GZIP permet d'améliorer les performances de navigation en compressant ce qu'envoie le serveur à un client. Pour comprendre comment cela fonctionne, regardons ce qu'il se passe au niveau HTTP lorsqu'un client tente d'accéder à une ress...
Cliquez pour lire la suite de l'article par cyril
Logiciels
Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning Academy System (17.1.3.0)ACADEMY SYSTEM (17.1.3.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|