BDD Remplacer un texte par une fonction
Résolu
tacki
-
tacki -
tacki -
Bonjour,
Je vous explique ce que je voudrais faire :
1. J'enregistre dans la base de donnée sql dans un champ texte par exemple
[2] {8} (enregistré sous $message)
2. je la récupère en php, et je voudrais remplacer ce qui se trouve par la fonction1
et ce qui se trouve entre {} dans par la fonction2
J'ai essayé avec
$message = str_replace("{","fonction1(",$message);
$message = str_replace("}",")",$message); // pour refermer la parenthèse
Mais lorsque je fais un echo il apparait :
fonction1(2) (qui normalement devrait renvoyer 'texte2')
fonction2(8) (qui normalement devrait renvoyer 'membre8')
Or bien sûr je voudrais qu'en fait ça m'affiche le résultat et non la formule !
Avez-vous une idée
Je vous explique ce que je voudrais faire :
1. J'enregistre dans la base de donnée sql dans un champ texte par exemple
[2] {8} (enregistré sous $message)
2. je la récupère en php, et je voudrais remplacer ce qui se trouve par la fonction1
et ce qui se trouve entre {} dans par la fonction2
J'ai essayé avec
$message = str_replace("{","fonction1(",$message);
$message = str_replace("}",")",$message); // pour refermer la parenthèse
Mais lorsque je fais un echo il apparait :
fonction1(2) (qui normalement devrait renvoyer 'texte2')
fonction2(8) (qui normalement devrait renvoyer 'membre8')
Or bien sûr je voudrais qu'en fait ça m'affiche le résultat et non la formule !
Avez-vous une idée
A voir également:
- BDD Remplacer un texte par une fonction
- Fonction si et - Guide
- Remplacer disque dur par ssd - Guide
- Texte de chanson gratuit pdf - Télécharger - Vie quotidienne
- Fonction remplacer sur word - Guide
- Transcription audio en texte word gratuit - Guide
2 réponses
Si tu veux exécuter la fonction, str_replace ne suffit pas car il renvoie une chaine.
Tu devras utiliser une fonction comme preg_replace_callback().
Je ne suis pas sûr d'avoir compris tes shortcodes entre accolades, donc j'ai fait avec ce que j'ai compris (un nombre entre accolades devient l'argument de ta fonction fonction1()) :
Tu as d'autres exemples ici :
https://www.php.net/manual/fr/function.preg-replace-callback.php
Tu devras utiliser une fonction comme preg_replace_callback().
Je ne suis pas sûr d'avoir compris tes shortcodes entre accolades, donc j'ai fait avec ce que j'ai compris (un nombre entre accolades devient l'argument de ta fonction fonction1()) :
$texte = 'Le {8} est gros'; function fonction1($num) { return "numéro " . $num; } $var = preg_replace_callback('/\{([0-9]*)\}/', create_function( // Les guillemets simples sont très importants ici // ou bien il faut protéger les caractères $ avec \$ '$matches', 'return fonction1($matches[1]);' ), $texte); print $var; // Affiche "Le numéro 8 est gros"
Tu as d'autres exemples ici :
https://www.php.net/manual/fr/function.preg-replace-callback.php
Ok merci beaucoup pour la solution c'est en effet ce que je recherche !
Juste un truc avec ta fonction ça m'affiche avec le print :
Le numéro {8} est gros
(à la place de 'Le numéro 8 est gros')
Donc ça doit être au niveau du masque qu'il y a un souci ?
Je vais lire ton lien, car avec les masques j'ai toujours beaucoup de mal à comprendre !
Merci en tout cas de m'avoir répondu, vite et efficace !
Juste un truc avec ta fonction ça m'affiche avec le print :
Le numéro {8} est gros
(à la place de 'Le numéro 8 est gros')
Donc ça doit être au niveau du masque qu'il y a un souci ?
Je vais lire ton lien, car avec les masques j'ai toujours beaucoup de mal à comprendre !
Merci en tout cas de m'avoir répondu, vite et efficace !