Bonjour,

J'ai un problème avec mon code qui n'en ai pas vraiment un, plutôt une incompréhension

Le code

J'ai fait une fonction pour générer une ligne HTML avec pout paramètres le texte à mettre en les balises, la balise, et les paramètres optionnels (id="" par exemple).

/**
 * Renvoie une chaine de caractères entourée d'un tag HTML
 *
 * @param string $string
 *            Chaine de caractères a entourer
 * @param string $tag
 *            tag HTML
 * @param array $params
 *            paramères à ajouter dans le tag
 * @return string Chaine de caractères entourée
 */
function surroundHTML($string, $tag, $params = [])
{
    $return = "<" . $tag;

    if (! empty($params)) {
        foreach ($params as $param) {
            $return .= " $param ";
        }
    }

    $return .= "> $string"; // le navigateur ajoute la basise fermante automatiquement
    $return .= "<";
    $return .= "&#47";
    $return .= $tag;
    $return .= ">";

    return $return;
}

Ce qui est bizarre c'est que quand j'utilise la fonction, le navigateur ou PHP (je ne suis pas sûr) ajoute automatiquement une balise fermante

En exemple

echo surroundHTML("Vous êtes connecté", "h1");

Me donne sur le navigateur

 Vous êtes connecté</h1>

Dans le code source

<h1> Vous êtes connecté<&#47h1>

Je suppose que c'est à cause du &#47h1 que j'ai mis a la place du / dans mes chaînes de caractères.
J'ai fait ça car c'est la seule solution que j'ai trouvé pour insérer un / sinon tout ce qui est après le / disparaît dans la chaîne de caractère

J'espère que c'est assez clair et merci d'avance pour votre aide.

2 réponses


Axis
Réponse acceptée

Salut,

Tu peux doubler ton slash ou sinon utiliser des simples quotes
;-)

Bon courage

Kiyauden
Auteur

Merci,
J'étais persuadé d'avoir essayé ça, je ne sais pas ce que j'avais fait différemment.

Mille mercis