Bonjour,

Je suis toute nouvelle dans le développement Web. Aussi, je me permets de vous exposer mon problème avec PHP.

En fait, j'ai ajouté le code suivant dans le fichier function.php de mon site Wordpress afin de pouvoir remplacer "en 2023" par "en <time datetime="2023-01-18">2023</time>" :

function modif_text_wps($texte){
$modif = array(
// Année => ne pas oublier de modifier le datetime
'en 2023' => 'en <time datetime="2023-01-18">2023</time>',
);
$texte = str_replace(array_keys($modif), $modif, $texte);
return $texte;
}


Jusque là ça fonctionne très bien.

Cependant, je souhaiterai que la date "2023-01-18" soit variable et qu'elle affiche la date du jour.

J'e cherche une solution depuis un bon moment mais sans résultat.

Merci pour votre aide,

Amandine
Modifié par annutile (18 Jan 2023 - 11:38)
Modérateur
Mathieuu a écrit :
Edit : Smiley angryfire Smiley vieux

hahahah c'est quand meme fou qu'on arrive a etre aussi synchro apres 23min Smiley lol
Modérateur
Salut annutile et bienvenue sur le forum,

Bien que l'intervention de _laurent soit pertinente, je rajouterai ceci :
Pour l'attribut datetime à ton élément html <time>, je te conseille que la valeur soit en iso 8601. C'est un format d'affichage universel.

Tu auras besoin de :
- date (ce que t'a suggéré _laurent)
- strtotime (ça t'évitera de te soucier du format à afficher dans le datetime)

Surtout, pense que la doc officielle de php est ta bible. C'est une documentation bien faite.

nb: Je viens de voir que strftime et strptime sont obsolètes depuis 8.1. C'est sexy de travailler avec les date en php.... Enfin, maintenant pour moi, c'est osef
Modifié par niuxe (18 Jan 2023 - 12:22)
Merci pour votre aide !

J'ai ajouté ce qui est en rouge :

function modif_text_wps($texte){
$today = date("Y-m-d");
$modif = array(
// Année => ne pas oublier de modifier le datetime
'en 2023' => 'en <time datetime="$today">2023</time>',
);
$texte = str_replace(array_keys($modif), $modif, $texte);
return $texte;
}


Mais j'obtiens : <time datetime="$today">2023</time>
Modérateur
niuxe a écrit :
C'est tout à fait normal que tu aies ce résultat.

Essaie ce code et essaie de comprendre le résultat (simple quotes VS double quotes)

J'y pense pas souvent à ça tiens... j'ai pris l'habitude de toujours tout concaténer :
echo 'bonjour ' . $une_var;

Modifié par _laurent (18 Jan 2023 - 14:11)
Lorsque j'ajoute le code
echo 'bonjour ' . $une_var;
à la place de la date j'obtiens l'erreur suivante :

syntax error, unexpected identifier "bonjour", expecting ")"
Salut,

il faudrait nous donner le reste du code de ton test parce qu'il n'y a pas vraiment de raison de vouloir une parenthèse juste avec ce code Smiley ohwell
Modérateur
annutile a écrit :
Lorsque j'ajoute le code
echo 'bonjour ' . $une_var;
à la place de la date j'obtiens l'erreur suivante :

syntax error, unexpected identifier "bonjour", expecting ")"


Heu... le bonjour c'était un exemple hein il faut l'adapter a ton cas...

ce que Niuxe a tenté de t'expliquer c'est que la variable $today ici :
'en <time datetime="$today">2023</time>'

n'est pas prise comme une variable mais comme une chaine de caractère à cause des simple quote. Donc tu peux utiliser un des autres moyens à savoir les doubles quotes (attention il y a déjà des doubles quotes dans ta chaine) ou la concaténation avec le .

"en <time datetime=\"$today\">2023</time>"

'en <time datetime="' . $today . '">2023</time>'

Modifié par _laurent (18 Jan 2023 - 14:58)
Meilleure solution
Je viens d'essayé et c'est correct. Il ne me reste plus qu'à mettre une variable date.
Modifié par annutile (18 Jan 2023 - 15:11)