Le logo de PHP 5  PHP 5 Cours et exercices  2e Edition La couverture du livre PHP 5

Jean ENGELS       Editions Eyrolles

Chapitre 4: Les chaînes de caractères

Exercice 1

Transformez une chaîne écrite dans des casses différentes afin que chaque mot ait une initiale en majuscule.

<?php
$ch="TransFOrmeZ unE ChaîNE écRITe dans des cASses diFFéreNTes afiN
qUe chAQue MOT ait une inITiale en MAJUSCULE";
echo ucwords(strtolower($ch));
?>
Le résultat est le suivant :
Transformez Une Chaîne Écrite Dans Des Casses Différentes Afin Que Chaque Mot Ait Une Initiale En Majuscule Remarquez que la fonction ucwords() permet d’avoir des majuscules accentuées.

Exercice 2

En utilisant la fonction strlen() écrivez une boucle qui affiche chaque lettre de la chaîne PHP 5 sur une ligne différente.

<?php
$ch="PHP 5";
for($i=0;$i<strlen($ch);$i++)
{
echo "<h3> $ch[$i] </h3>";
}
?>

Exercice 3

Formatez l’affichage d’une suite de chaînes contenant des nom et prénom en respectant les critères suivants : un prénom et un nom par ligne affichés sur 20 caractères; toutes les initiales des mots doivent se superposer verticalement.

<?php
$nom1="Azerky";
$prenom1="Sophia";
echo sprintf ("%'_-20s %'_-20s 
",$nom1,$prenom1); $nom2="Bazertudoh"; $prenom2="Jean-Michel"; echo sprintf ("%'_-20s %'_-20s
",$nom2,$prenom2); ?>
Pour obtenir de bons résultats il est préférable d’utiliser une police à espacement fixe en incluant le texte de chaque ligne dans un élément HTML <tt>. Le résultat obtenu est le suivant :
Azerky______________ Sophia______________
Bazertudoh__________ Jean-Michel___________
Nous pouvons également utiliser la fonction vsprintf() et passer les chaînes à afficher dans un tableau multidimensionnel.
<?php
$tab[0][]="Azerky";
$tab[0][]="Sophia";
$tab[1][]="Bazertudoh";
$tab[1][]="Jean-Michel";
for($i=0;$i%'_-20s %'_-20s 
",$tab[$i]); } ?>

Exercice 4

Utilisez les fonctions adéquates afin que la chaîne <form action="script.php"> soit affichée telle quelle et non comme du code HTML.

<?php
$ch='<form action="script.php">';
echo htmlentities($ch);
?>
Le code HTML de l’affichage est le suivant : <form action="script.php">

Exercice 5

À partir de deux chaînes quelconques contenues dans des variables, effectuez une comparaison entre elles pour pouvoir les afficher en ordre alphabétique naturel. Nous utilisons la fonction strtolower() avant d’opérer la comparaison, sinon tous les caractères de A à Z sont avant les caractères a à z.

<?php
$ch1="alpha";
$ch2="Azéma";
if(strtolower($ch1)<strtolower($ch2)) echo $ch1 ," est avant ",$ch2;
else echo $ch2 ," est avant ", $ch1;
?>

Exercice 6

Effectuez une censure sur des textes en n’affichant pas ceux qui contiennent le mot zut.

<?php
$ch="Zut je me suis trompé";
$modele="zut";
if(eregi($modele,$ch)) echo "Un Mot censuré";
else echo $ch;
?>

Exercice 7

Créez une fonction de validation d’une adresse HTTP ou FTP envous inspirant de l’exemple 4-12. Le modèle doit répondre à la définition suivante : 1. Commencer par « www » 2. Suivi par des lettres puis éventuellement un point ou un tiret suivis d’un deuxième groupe de lettres 3. Se terminer par un point suivi de l’extension qui peut avoir de 2 à 4 caractères. Par exemple, les adresses www.machin.com ou www.machintruc.uk sont valides.

<?php
//Création de la fonction de validation
function validhttp($ch)
{
$modele="^(www)\.([a-z0-9]+)(\.|-)?([a-z0-9]*)\.([a-z]{2,4}$)";
$ch=strtolower($ch);
if (ereg($modele, $ch))
{
echo "$ch est valide <br />";
return TRUE;
}
else
{
echo "$ch est invalide <br />";
return FALSE;
}
}
//Utilisation de la fonction de validation
$url="www.laposte2.info";
$url2="www.pierre-plus-loin.info";
$url3="www.engels.funphp.com";
validhttp($url);
validhttp($url2);
validhttp($url3);
?>
Les résultats obtenus sont les suivants :
www.laposte2.info est valide
www.pierre-plus-loin.info est invalide
www.engels.funphp.com est valide

Exercice 8

Créez une expression régulière pour valider un âge inférieur à 100 ans.

<?php
$modele="^[0-9]?([0-9]?)$";
$age="84";
if (ereg($modele, $age))
{
echo "$age est un age valide <br />";
return TRUE;
}
else
{
echo "$age est un age invalide <br />";
return FALSE;
}
?>
Le résultat obtenu est le suivant :
84 est un age valide

Exercice 9

Dans la chaîne PHP 5 \n est meilleur \n que ASP\n et JSP \n réunis, remplacez les caractères \n par
en utilisant deux méthodes différentes (une fonction ou une expression régulière).
1. En utilisant la fonction nl2br()

<?php
$ch="PHP 5 \n est meilleur \n que ASP \n et JSP \n réunis";
echo "

",nl2br($ch),"

"; ?>
2. En utilisant une expression régulière et la fonction ereg_replace()
<?php
$ch="PHP 5 \n est meilleur \n que ASP \n et JSP \n réunis";
echo ereg_replace("\n","
",$ch); ?>
Dans les deux cas on obtient le même résultat suivant:
PHP 5
est meilleur
que ASP
et JSP
réunis