BDD Remplacer un texte par une fonction
Résolu/Fermé
A voir également:
- BDD Remplacer un texte par une fonction
- Fonction si et - Guide
- Remplacer disque dur par ssd - Guide
- Word remplacer un mot par un autre - Guide
- Excel cellule couleur si condition texte - Guide
- Transcription audio en texte word gratuit - Guide
2 réponses
caphar
Messages postés
50
Date d'inscription
mardi 15 mars 2011
Statut
Membre
Dernière intervention
7 septembre 2011
12
Modifié par caphar le 4/04/2011 à 13:30
Modifié par caphar le 4/04/2011 à 13:30
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 !
caphar
Messages postés
50
Date d'inscription
mardi 15 mars 2011
Statut
Membre
Dernière intervention
7 septembre 2011
12
4 avril 2011 à 13:31
4 avril 2011 à 13:31
T'as raison, j'avais oublié les parenthèses et j'utilisais $matches[0] qui récupère l'ensemble des résultats. J'ai corrigé le code dans ma réponse.
Là je ne reprends que le chiffre et $matches[1] isole chaque résultat.
Là je ne reprends que le chiffre et $matches[1] isole chaque résultat.