Besoin d'aide str_replace - foreach
Posté : 22 mai 2012, 15:55
Bonjour à tous,
Je m'arrache les cheveux depuis hier soir sur une boucle foreach sensé remplacer des morceaux de texte.
Pour faire simple, il s'agit de remplacer du code html/php/js qui aurait été posté dans un texte par leur affichage 'en clair dans une citation (un peu comme ici lorsque l'on utilise les balises).
El là bien évidement ce code ne fonctionne pas correctement, je cale, si vous pouviez éclairer ma lanterne, ce serait avec grand plaisir
Je m'arrache les cheveux depuis hier soir sur une boucle foreach sensé remplacer des morceaux de texte.
Pour faire simple, il s'agit de remplacer du code html/php/js qui aurait été posté dans un texte par leur affichage 'en clair dans une citation (un peu comme ici lorsque l'on utilise les balises).
$textes = $data[contenu];
$marqueurDebut = '<citation>';
$debut = strpos( $textes, $marqueurDebut ) + strlen( $marqueurDebut );
$marqueurFin = '</citation>';
$fin = strpos( $textes, $marqueurFin ) ;
$citation = preg_match_all ($marqueurFin, $textes, $matches, PREG_OFFSET_CAPTURE);
if (preg_match($marqueurDebut, $textes)){
$text = substr( $textes, $debut, $fin - $debut);
$texthtml = htmlspecialchars($text);
$cite = str_replace( "$text", "$texthtml", $data[contenu]);
echo nl2br($cite);
}
else {
$data[contenu] = nl2br($data[contenu]);
echo $data[contenu];
}
Ce code fonctionne très bien lorsqu'il n'y a qu'une seule occurrence à remplacer et c'est donc ici que j'ai voulu utiliser foreach : $textes = $data[contenu];
$marqueurDebutLien = '<citation>';
$debutLien = strpos( $data[contenu], $marqueurDebutLien ) + strlen( $marqueurDebutLien );
$marqueurFinLien = '</citation>';
$finLien = strpos( $data[contenu], $marqueurFinLien ) ;
$citat = '</citation>';
$citation = preg_match_all($citat, $textes, $matches, PREG_OFFSET_CAPTURE);
if (preg_match($citat, $textes)){
foreach ( $citation as $leLien) {
$leLien = substr( $textes, $debutLien, $finLien - $debutLien);
$texthtml = htmlspecialchars($leLien);
$cite = str_replace( "$leLien", "$texthtml", $data[contenu]);
}
echo nl2br($cite);
El là bien évidement ce code ne fonctionne pas correctement, je cale, si vous pouviez éclairer ma lanterne, ce serait avec grand plaisir