Page 1 sur 2
Exercice sur les fonctions en php
Posté : 26 déc. 2013, 15:40
par Panninie
Bonjour, j'aurais besoin d'aide pour un exercice de php. Voila l'exercice :
"Ecrivez une fonction qui reçoit en paramètre une chaîne de caractères et un entier représentant
un code de formatage HTML. Le code de formatage représente un nom de balise HTML et
sera parmi div, p, h1 et h2. La fonction doit renvoyer la chaîne entourée de la balise
correspondant au formatage demandé. Si le code de formatage n’est pas parmi ceux autorisés,
la fonction ne renvoie rien. Créez une page utilisant cette fonction plusieurs fois avec
différents codes de formatage."
J'ai essayé pleins de choses mais rien ne fonctionne comme le demande l'exercice ..
Re: Exercice sur les fonctions en php
Posté : 26 déc. 2013, 15:46
par niuxe
salut,
peut on voir ton code ?
Re: Exercice sur les fonctions en php
Posté : 26 déc. 2013, 15:50
par sirakawa
Exercice d'une utilité phénoménale... Décidément les profs d'informatique manquent d'imagination.
Enfin, passons.
Je suppose que:
1) Les tableaux ont été abordés. (tableau des balises utilisables)
2) Le if a été vu (si le nombre est dans le bon intervalle on agit sinon on ne fait rien). Peutaussi se faire avec un switch)
2) La concaténation a été vue.
A partir de là, rien de bien compliqué
$balises = array(
1 => array("<h1>", "</h1">"),
6 => array("<h6>","</h6"),
);
$texte_balise = "";
$nb_balises = count($balises);
if (($nombre < 1) ou ($nombre > $nb_balise)) //ou >=
{
}
else
{
}
return $texte_balise;
Re: Exercice sur les fonctions en php
Posté : 26 déc. 2013, 16:04
par Panninie
Est-ce qu'il est possible de faire cette fonction qu'avec un switch ? Quelque chose du genre :
function code_formatage($i, $a){
$i=1;
switch($i){
case 1 : echo '<div> $a </div>'; break;
case 2 : echo '<p>' $a '<p>'; break;
case 3 : echo '<h1>' $a '<h1>';break;
case 4 : echo '<h2>' $a '<h2>';break;
default : echo "Erreur" ;break;
}
}
code_formatage(6,"Bonjour");
(Cela ne fonctionne pas avec ces codes là..)
Je teste ce que tu dis sirakawa, oui on a vu tout ça, mais je suis pas très très forte en php..
Re: Exercice sur les fonctions en php
Posté : 26 déc. 2013, 16:16
par Panninie
J'ai essayé ce que tu as dis sirakawa en mettant un switch, cependant je dois faire quelque chose de faux car je n'y arrive pas.. Voila mon code :
<?php
function code_formatage($nombre, $texte_balise){
$balises = array(
1 => array("<div> $texte_balise </div>"),
2 => array("<p> $texte_balise </p>"),
3 => array("<h1> $texte_balise </h1>"),
4 => array("<h2> $texte_balise </h2>"),
);
$texte_balise = "";
$nombre=1;
switch($nombre){
case 1 : echo $balises[1] ; break ;
case 2 : echo $balises[2] ; break ;
case 3 : echo $balises[3] ; break ;
case 4 : echo $balises[4] ; break ;
default : echo "Erreur" ; break ;
}
return $texte_balise;
}
code_formatage(3, "Bonjour");
?>
Re: Exercice sur les fonctions en php
Posté : 26 déc. 2013, 16:31
par niuxe
Tu n'as pas besoin de if ou switch. On peut faire plus simple !
Code : Tout sélectionner
function txt2Html($index,$str){
$tab = array(
'<div>'.$str.'</div>',
'<p>'.$str.'</p>',
'<h1>'.$str.'</h1>',
'<h2>'.$str.'</h2>',
);
return $tab[$index];
}
echo txt2Html(1,'Salut');
Re: Exercice sur les fonctions en php
Posté : 26 déc. 2013, 16:35
par niuxe
oups, j'oublie une clause de l'exo avec une amélioration de mon idée :
Code : Tout sélectionner
function txt2Html($tag,$str){
$tags = array('div','p','h1','h2');
$tab = array(
'<div>'.$str.'</div>',
'<p>'.$str.'</p>',
'<h1>'.$str.'</h1>',
'<h2>'.$str.'</h2>',
);
return in_array($tag,$tags) ? $tab[array_search($tag,$tags)] : '';
}
echo txt2Html('p','Salut');
Re: Exercice sur les fonctions en php
Posté : 26 déc. 2013, 16:37
par ikkiphenix
Code : Tout sélectionner
<?php
function format_code($string, $tag)
{
$tags = array('div', 'p', 'h1', 'h2');
$formatted = sprintf("<%s>%s</%s>",$tags["$tag"], $string, $tags["$tag"]);
return $formatted;
}
echo format_code("coucou", 2);
?>
Re: Exercice sur les fonctions en php
Posté : 26 déc. 2013, 16:41
par Panninie
Merci beaucoup niuxe, ça fonctionne ! Et en plus j'ai compris les erreurs que je faisais

.
Re: Exercice sur les fonctions en php
Posté : 26 déc. 2013, 16:46
par niuxe
Merci beaucoup niuxe, ça fonctionne ! Et en plus j'ai compris les erreurs que je faisais

.
regarde ma dernière réponse, tu as une améioration avec la correction de ma première solution

. Si tu ne connais pas ces fonctions array_search et in_array, regarde la doc
<<<EDIT
Regarde la solution de Ikikiphénix. De mon côté, je suis parti de ton idée (stocker les tags dans un array). Or la solution de Ikikiphénix est de loin la meilleur idée. Il ne te reste plus qu'à adapter ma solution avec celle d'Ikikiphénix. (sprintf et in_array)
si in_array -> return sprintf avec array_search surement sinon retourne rien
Si tu n'y arrives pas, montre nous ton code et on t'aidera

EDIT;
Re: Exercice sur les fonctions en php
Posté : 26 déc. 2013, 17:09
par niuxe
Exercice d'une utilité phénoménale...
C'est un début pour un helper. Je t'avoue que c'est pas très évolué comme exo.
Je pense que le but de ce genre d'exo est de savoir utliser php en mode basique. D'ailleurs ça met plusieurs choses en évidence dont une (le fondement de php). Php est un moteur de template html par défaut. Ce qui pour effet de se dire plus tard, pourquoi utiliser Smarty ou autres moteurs de template ? ....
Re: Exercice sur les fonctions en php
Posté : 26 déc. 2013, 17:11
par Panninie
C'est bon, tout fonctionne ! Merci beaucoup à tout le monde pour votre aide bien précieuse!
Re: Exercice sur les fonctions en php
Posté : 26 déc. 2013, 17:17
par niuxe
Un petit résolu dans le titre du sujet, c'est pas mal

Re: Exercice sur les fonctions en php
Posté : 26 déc. 2013, 17:21
par Tourterelle
Je comprends votre code niux mais avec moi il ne marche pas, cela ne veut pas s'afficher..
Re: Exercice sur les fonctions en php
Posté : 26 déc. 2013, 17:24
par Tourterelle
Niuxe** désolé pour l'orthographe
