Traitement de données (mise en forme de texte)

Nouveautés : Tableau   str_replace()  strtolower()  strtoupper()  substr()  trim()  Regex : ^ et $

Après notre beau script qui affiche un micro-bulletin météo, vous vous êtes rendu compte que tout micro qu'il soit, il n'arrive pas à s'afficher en entier, on va donc remanier le texte afin qu'il soit encore plus comprimé, quitte à utiliser un style télégraphique.
Le but ici est surtout d'amener quelques fonctions suplémentaires, ensuite, je pense que l'étrier sera assez usé pour que vous voliez de vos propres ailes

str_replace()

C'est une fonction semblable à preg_replace() en plus simple : pas de Regex mais une chaîne de caractère de recherche, ici, nous allons l'utiliser sur des tableaux ! il est important de comprendre que chaque position du tableau est ici un couple (recherche, remplacement) et que cela se fait pour toute la variable texte, dans l'ordre ! (le premier couple est entièremet traité, puis le deuxième couple traitera le résultat du premier etc.

Tableau (array)

Un tableau est une variable comportant plusieurs données et plusieurs dimensions, ici, nous n'aurons qu'une seule dimension, et une suite de données (qui peuvent être de types différents, séparées par des virgules:

$o = array("1","2",3,4);

Pour comprendre le concept de dimensions, pensez à un répertoire : il ya autant de dimensions que de type de données, et le même nombre de données dans chaque dimension : Nom, Prénom, etc. Chaque groupe de données multidimentionnelle représentant ici une fiche.

Regex

Sont employés ici les marqueurs de début ^ et de fin $ qui indiquent que la chaine recherchée, que ce soit la virgule, ou n'importe quel caractère (code: un point: . du coup si on voulait mettre un vrai point il faudrait l'échapper par un anti slash

trim()

Supprime les éventuels espaces de début et de fin, en PHP, il existe des ltrim et des rtrim, mais pas avec les fonctions acceptées par Eedomus)

substr()

Extrait à partir d'une chaîne, une autre chaîne à la position p et de longueur l : p commence à 0 !

strtolower()

Met la chaine en minuscule, cela permetra de traiter des mots de la même manière qu'ils soient en début de phrase ou pas.

strtoupper()

Met la chaine en majuscule, ici cela servira à mettre la première lettre de la phrase en majuscule

Structure

La syntaxe de notre code comprendra 2 variables, plus la variable d'origine, qu'on va initialiser pour nos tests, cette initialisation ne fait pas partie du code, puisque ce dernier devra être ajouté au script précédent, concernant l'extraction de notre micro-bulletin (juste avant la mise en place des balises <bulletin>).
<?php

$url = "Encore quelques averses dans le Sud-Est. Ensoleillé sur le reste du pays.";

// l'ajout de script commence ici ===========

$url = str_replace("même type de temps,","", $url);
// on peut supprimer des phrases considérées inutiles

$o = array(".","nord","sud","ouest","est","Eival",", et","encore"," et ","des pyrénées","des alpes");
$r = array(",","N","S","O","E","estival",",","",", ","pyrénéen","alpin");
$url = str_replace($o, $r, strtolower($url));
// tout en minuscules (strtolower), le point a été remplacé par la virgule (1er couple) on simplifie la rose des vents, du coup...
// on corrige les remplacements hasardeux (est), on remplace des expressions par des adjectifs... laissez faire votre imagination.


$url = preg_replace ("#([NSEO])-([NSEO])-?([EO])?#","$1$2$3",trim($url));
// ce code servira a supprimer les tirets dans la rose des vents, voir ICI

$url = preg_replace("/,$/",".",trim($url));
// ici on a rétablit le point à la fin (Regex, donc preg_replace pour indiquer la virgule à la fin du texte avec le signe $)
// on en a profité pour enlever l'espaces de début créé par la suppression de mots (trim)


$url = strtoupper($url[0]).substr($url, 1);

// et enfin on remet une majuscule en début de phrase (la première lettre, remplacée par sa majuscule) Voir Ici

// et se termine ici ====================

$url = "<bulletin>" . $url . "</bulletin>";
echo $url;

?>
Conseils: Ne vous précipitez pas à essayer de tout mettre au point en une seule fois: corrigez ce script petit à petit, à chaque fois que vous voyez la ligne déborder... inutile de faire du style télégraphique quand ce n'est pas necessaire, sachez remplacer un mot, une expression, voir vous en passer, vous pouvez même appliquer des simplifications uniquement quand la longueur du texte ets trop importante pour tenir dans l'espace alloué. (instruction conditionnelle à partir de la donnée extraite par strlen)

A vous...

NB: ce mini didacticiel termine la séquence des "pieds à l'étrier", dès que vous l'aurez intégré, vous serez prêt pour le grand saut, à savoir comment réellement réaliser une Extraction de données à partir d'une page HTML, le chapître correspondant vous y invitera, à chercher dans le menu Eedotrucs sous le nom "Extraction" en fin de chapître PHP.