str_replace() et guillemets

Petit nouveau ! | 1 Messages

03 mai 2012, 11:21

Bonjour à tous, j'ai un petit problème et je ne trouve aucun moyen de le résoudre:

Je dois travailler sur une lettre enregistrée en .xml, du genre:
"Cher Monsieur "nom" "prénom" blablabla"
Dans cette lettre ce trouve des champs type "nom" et "prénom". Le truc c'est que je dois ouvrir la lettre, chercher les champs et les remplacer.

Le hic, c'est les guillemets, voila mon code:
<?php
$name = 'monCourrier.xml'; // nom du fichier à ouvrir
$myFile = file_get_contents('documents/'.$name);

$search='"nom"';
$replace='Albert';

// envoi d'un en-tête php qui indique au navigateur web que le contenu qui arrive 
// est de type binaire et à exploiter par Word
header('Content-Type: application/msword; name="'.$name.'"');
header('Content-Transfer-Encoding: binary');
header('Content-Disposition: attachment; filename="'.$name.'"');
  
// Appel de str_replace pour remplacer le champ
echo str_replace($search, $replace, $myFile);
Quand je lance ma page PHP, le champ "nom" reste intact et ne change pas. J'ai remarquer que cela venait des guillemets car j'ai éssayer de les enlever et ça marche, le problème c'est que cela remplace toutes les occurences du mot 'nom' dans le document entier ce qui donne un résultat étrange pour une lettre.
Donc voila, si quelqu'un sait comment faire pour bien remplacer le champ "nom", je suis preneur ^^

Mammouth du PHP | 2278 Messages

03 mai 2012, 12:33

ça devrait faire l'affaire:
<?PHP
    $texte = "Cher monsieur ".'"nom"'." vous avez gagné au nom de dieu pour ".'"nom"';
    print "$texte";
   $resultat = preg_replace ( "/\"nom\"/" , "toto" , $texte);
   print "$resultat";
?>
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD