Bonjour,
J'ai un fichier texte avec des mots clé identifiés de cette façon {.mot_clé.} et je voudrais les extraire avec un preg_match_all mais pas moyen de trouver le bon pattern.
Est ce que quelqu'un pourrait m'aider.
Merci d'avance
Bonjour,
J'ai un fichier texte avec des mots clé identifiés de cette façon {.mot_clé.} et je voudrais les extraire avec un preg_match_all mais pas moyen de trouver le bon pattern.
Est ce que quelqu'un pourrait m'aider.
Merci d'avance
montre nous un exemple de code que tu as essayé
En fait je viens de trouver la solution à l'instant :
Mais j'ai un autre problème tout c..
Code : Sélectionner tout - Visualiser dans une fenêtre à part preg_match_all("@{.([^#]*).}@",$buffer,$no_cache);
Je voudrait prendre ce résultat et l'utiliser pour constituer le nom d'une variable de type POST dans un preg_replace mais pas moyen de trouver la bonne syntaxe :
Donc si vous avez une idée je suis preneur
Code : Sélectionner tout - Visualiser dans une fenêtre à part preg_replace('@{.$no_cache[1][0].}@', $_POST[$no_cache[0][1]], $buffer);
Déjà ta première regex ne doit pas marcher correctement car tu n'échappes pas les points.
Moi j'aurais plutôt fait ça
Code : Sélectionner tout - Visualiser dans une fenêtre à part "@{\.([^#]+)\.}@"
Les accolades ({ et }) sont également des métacaractères donc nécessitent, eux-aussi, échappement. En temps normal ils ont pour but d'indiquer le nombre d'occurrence. (même chose pour $ si vous veniez à le réutiliser, ancre indiquant la fin de la chaîne)
Quant à votre remplacement, si celui-ci doit être dynamique il faut se tourner vers preg_replace_callback ou le modificateur e. Le paramètre de remplacement (le deuxième de preg_replace) n'est évalué qu'une seule fois, au moment où votre fonction est exécutée. Exemple :
(vous pourrez trouver d'autres exemples si nécessaire sur ce même forum)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 $in = '{.qui.} a mangé {.fruit.}'; $_POST = array('qui' => 'toto', 'fruit' => 'pomme'); $out = preg_replace('#\{\.([[:alnum:]_]+)\.\}#e', 'isset($_POST["\1"]) ? $_POST["\1"] : "\1"', $in); echo $out;
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager