[PHP] extraire des infos d’un texte

Créé le : 18 mai 2017
Catégorie: Divers
Mise à jour : 18 mai 2017

[PHP] extraire des infos d’un texte

closeCet article a été publié il y a 1 an 1 mois 1 jour, il est donc possible qu’il ne soit plus à jour. Les informations proposées sont donc peut-être expirées.

Parfois il est utile de pouvoir extraire des données depuis un texte

Exemple de donnée

texte qui n'a rien à voir
du tout....
Nom TOTO
Prénom titi
Matricule 001009999
Responsable hiérarchique Cyberscooty
Départ effectif le 30/10/2016 
autre texte qui n'a rien a voir avec ce qui nous
interesse

j’aimerai bien extraire dans 5 champs différents les informations Nom, Prenom, matricule, …

« Lire » et « traduire » le texte avec PHP

  1. Analyse ligne par ligne : utilisation de « explode » pour mise de chaque ligne dans une array
  2. recherche de la valeur qui nous interesse
  3. Une fois qu’on a trouvé la bonne ligne à analyser, on extrait les données
  4. On affiche les différentes variables

Code de la page avec un champ pour coller le texte source et un bouton pour faire la conversion

<?php include 'header.php';?>


<div id="main">
<?php
//test si envoi du formulaire convert 
if (isset($_POST['convert']) && $_POST['convert'] == 'convert') { 
$data=$_POST["data"]; 
//séparation des données par ligne 
$donnee = explode("\n", $data); 
//recherche ligne contenant 'Nom' - permet de selectionner la bonne ligne du texte source si il y a des lignes avant 
foreach($donnee as $key => $value) {if (strpos($value, 'Nom') !== false) {$cle=$key;}}

//extraction des valeurs et mise dans une variable
	$nom=trim(substr($donnee[$cle],strpos($donnee[$cle], 'Nom')+4));
	$prenom=trim(substr($donnee[$cle+1],strpos($donnee[$cle+1], 'nom')+4));
	$resp=trim(substr($donnee[$cle+3],strpos($donnee[$cle+3], 'ique')+5));
	$matricule=trim(substr($donnee[$cle+2],strpos($donnee[$cle+2], 'cule')+5));
	$depart=trim(substr($donnee[$cle+4],strpos($donnee[$cle+4], ' le ')+4));

	
//affichage des variables
echo '<h2>R&eacute;sultat</h2>';
echo 'nom : '.$nom.'</br>';
echo 'prenom : '.$prenom.'</br>';
echo 'matricule : '.$matricule.'</br>';
echo 'responsable : '.$resp.'</br>';
echo 'depart : '.$depart.'</br>';


}//fin du if convert
	
//==============début de la page	
?>
<h2>Source des donn&eacute;es</h2>
<form action="index.php" method="post">
<textarea placeholder="copier coller ici les donn&eacute;es source" name="data"><?php echo $_POST["data"];?></textarea>
<input type="submit" name="convert" value="convert">
</form>

</body>
</html>

Résultat

Laissez un commentaire