8791 sujets

Développement web côté serveur, CMS

Bonjour à tous!
Dans ce topic:
topic
je parlais de remplacer des anti-slash apostrophes ( \' ) par des apostrophes ( ' ).
Voici le code en question :

<?php
if( $_POST && $_POST['document'] )
{
	$document = html_entity_decode( $_POST['document'] , ENT_QUOTES , "UTF-8" );
	$pieces = explode('/',$document);
	$nomFichier = str_replace( "\\'" , "'" , $pieces[count($pieces)-1] );
	$document = str_replace( "\\'" , "'" , utf8_decode($document) );
	//$document = utf8_decode("contenu/Qualité/1-MQ-Managt Qualité/Recueil qualité/Notepersonnel-140906.doc");
	
	header('Content-Type: text/html; Charset=UTF-8');
	header('Content-disposition: attachment; filename='.utf8_decode($nomFichier));
	header('Content-Type: application/force-download');
	header('Content-Transfer-Encoding: fichier'); 
	header('Content-Length: '.filesize($document));
	header('Pragma: no-cache');
	header('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0');
	header('Expires: 0');
	readfile("$document");
}
?>


Sur ce code tout a très bien marché tout de suite.
Sauf que là j'ai un petit soucis. J'ai un XML qui stocke toutes mes news. Mon site étant entièrement encodé en UTF-8 (enfin je pense que c'est la raison tout du moins) mes apostrophes ( ' ) sont remplacées par des anti-slash apostrophes ( \' ). Je me retrouve donc devant le même problème que dans mon ancien topic... Mais non! Parce qu'après avoir essayé str_replace et preg_replace, rien n'est remplacé. Et qand je teste avec d'autres valeurs (je remplace "de" par "sa") il n'y a aucun soucis. Smiley bawling

Voici mon code:

<div id="contenu">
			<h1> Toute l'actualité de la Sodedat 93! </h1>
<?php
				function normalize($str_bizarre) 
				{
				   $pattern = Array("/\\'/");
				   // notez bien les / avant et après les caractères
				   $rep_pat = Array("'");
				   $str_normale = preg_replace($pattern, $rep_pat, $str_bizarre);
				   return $str_normale;
				}
				
				$dom = new DomDocument();
				$xmlObject = "XML/news.xml";
				$dom->load($xmlObject);
				
				$tagId = $dom->getElementsByTagName('id');
				$tagNom = $dom->getElementsByTagName('nom');
				$tagTitre = $dom->getElementsByTagName('titre');
				$tagDate = $dom->getElementsByTagName('date');
				$tagHeure = $dom->getElementsByTagName('heure');
				$tagMessage = $dom->getElementsByTagName('message');
				$tagURL = $dom->getElementsByTagName('url');
				
				for( $i=0 ; $i<$tagNom->length ; $i++ )
				{
					$id = $tagId->item($i)->nodeValue;
					$nom = $tagNom->item($i)->nodeValue;
					$titre = $tagTitre->item($i)->nodeValue;
					$date = $tagDate->item($i)->nodeValue;
					$heure = $tagHeure->item($i)->nodeValue;
					$message = $tagMessage->item($i)->nodeValue;
					$url = $tagURL->item($i)->nodeValue;
					
					if( is_int($id/2) )
					{
						$classe = "pair";
					}
					else
					{
						$classe = "impair";
					}
?>
				<div class="news">
					<table border="0" cellspacing="2" cellpadding="3">
						<tr class=<?php echo $classe ?> class="entete">
							<td><?php echo $nom ?></td>
							<td><?php echo $titre ?></td>
							<td><?php echo $date." - ".$heure ?></td>
						</tr>
					</table>
					<table border="0" cellspacing="2" cellpadding="3">
						<tr class=<?php echo $classe ?> class="message">
							<td ><?php echo $message ?></td>
						</tr>
					</table>
				</div>
<?php
				}
?>
		</div>


Voilà, je suis un peu désespéré. J'ai l'impression que tout s'oppose à mon avancée...
Merci d'avance pour votre aide

EDIT : correction du lien
Modifié par arnaultp (04 Sep 2007 - 09:30)
Ah je ne connais pas cette fonction. Je vais regarder ça.
Cependant, j'ai réussi à trouver une solution ce matin. Je devais être fatigué hier soir. Je voulais remplacer \' par '. Donc autant remplacer \ par rien... Smiley biggrin
Et là ça marche...

Merci encore

EDIT : chaînes en gras
Modifié par arnaultp (04 Sep 2007 - 09:29)