Exercice sur les fonctions en php

Panninie
Invité n'ayant pas de compte PHPfrance

26 déc. 2013, 15:40

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 ..

Eléphant du PHP | 453 Messages

26 déc. 2013, 15:46

salut,

peut on voir ton code ?
La Tux attitude avec les kiw'z syou plait
Komodo Edit - Inkscape - Dia

Mammouth du PHP | 2278 Messages

26 déc. 2013, 15:50

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;
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Panninie
Invité n'ayant pas de compte PHPfrance

26 déc. 2013, 16:04

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..

Panninie
Invité n'ayant pas de compte PHPfrance

26 déc. 2013, 16:16

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");
?>

Eléphant du PHP | 453 Messages

26 déc. 2013, 16:31

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');
La Tux attitude avec les kiw'z syou plait
Komodo Edit - Inkscape - Dia

Eléphant du PHP | 453 Messages

26 déc. 2013, 16:35

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');
Modifié en dernier par niuxe le 26 déc. 2013, 16:50, modifié 2 fois.
La Tux attitude avec les kiw'z syou plait
Komodo Edit - Inkscape - Dia

Eléphant du PHP | 52 Messages

26 déc. 2013, 16:37

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); ?>
Image Zend Certified Engineer

Panninie
Invité n'ayant pas de compte PHPfrance

26 déc. 2013, 16:41

Merci beaucoup niuxe, ça fonctionne ! Et en plus j'ai compris les erreurs que je faisais :).

Eléphant du PHP | 453 Messages

26 déc. 2013, 16:46

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;
Modifié en dernier par niuxe le 26 déc. 2013, 17:14, modifié 1 fois.
La Tux attitude avec les kiw'z syou plait
Komodo Edit - Inkscape - Dia

Eléphant du PHP | 453 Messages

26 déc. 2013, 17:09

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 ? ....
La Tux attitude avec les kiw'z syou plait
Komodo Edit - Inkscape - Dia

Panninie
Invité n'ayant pas de compte PHPfrance

26 déc. 2013, 17:11

C'est bon, tout fonctionne ! Merci beaucoup à tout le monde pour votre aide bien précieuse!

Eléphant du PHP | 453 Messages

26 déc. 2013, 17:17

Un petit résolu dans le titre du sujet, c'est pas mal ;)
La Tux attitude avec les kiw'z syou plait
Komodo Edit - Inkscape - Dia

Tourterelle
Invité n'ayant pas de compte PHPfrance

26 déc. 2013, 17:21

Je comprends votre code niux mais avec moi il ne marche pas, cela ne veut pas s'afficher..

Tourterelle
Invité n'ayant pas de compte PHPfrance

26 déc. 2013, 17:24

Niuxe** désolé pour l'orthographe :?