Page 1 sur 1

Remplacer le retour a la ligne par du vide

Posté : 30 déc. 2013, 06:43
par rimie
Bonjour,

J'aimerais remplacer la fin de chaque balise suivit par "<br>" par un vide, ca veut dire, supprimer le "<br>", ca marche avec div mais avec les autres non:
<?php
$sentence = '<div class="x">Hello there Line 1</div>';
$sentence .= '<br>';
$sentence .= '<div class="x">Hello there Line 1 Bis</div>';
$sentence .= '<br>';
$sentence .= '<p class="x">Hello there Line 2</p>';
$sentence .= '<br>';
$sentence .= '<span>Hello there Line 4</span>';
$sentence .= '<br>';

echo $sentence.'<br /><br />';

$toRep = array('ul', 'p', 'div');

if (preg_match('#</(p|div|span)><br>#', $sentence)) {
    foreach($toRep as $v)
    {       
        $newS = preg_replace("#</$v><br>#", "</$v>", $sentence);
    }
} else {
    $newS = 'Error';
}

echo $newS;
?>

merci a vous

Re: Remplacer le retour a la ligne par du vide

Posté : 30 déc. 2013, 12:40
par ikkiphenix
Bonjour,

C'est juste pour supprimer les retours à la ligne ?

Code : Tout sélectionner

<?php $sentence = '<div class="x">Hello there Line 1</div>'; $sentence .= '<br>'; $sentence .= '<div class="x">Hello there Line 1 Bis</div>'; $sentence .= '<br>'; $sentence .= '<p class="x">Hello there Line 2</p>'; $sentence .= '<br>'; $sentence .= '<span>Hello there Line 4</span>'; $sentence .= '<br>'; $new_sentence = str_replace(array('<br>','<br />'), '', $sentence); echo $new_sentence; ?>

Re: Remplacer le retour a la ligne par du vide

Posté : 31 déc. 2013, 13:57
par rimie
merci ikkiphenix, il y a des retours a la ligne qui ne doivent pas etre supprimes, seuls les retours a la lignes suivis des balises listees dans un array qui doivent etre supprimes

Re: Remplacer le retour a la ligne par du vide

Posté : 31 déc. 2013, 23:29
par ikkiphenix
<?php
$sentence = '<div class="x">Hello there Line 1</div>';
$sentence .= '<br>';
$sentence .= '<div class="x">Hello there Line 1 Bis</div>';
$sentence .= '<br>';
$sentence .= '<p class="x">Hello there Line 2</p>';
$sentence .= '<br>';
$sentence .= '<span>Hello there Line 4</span>';
$sentence .= '<br>';

echo $sentence.'<br /><br />';

$newS = preg_replace('#</(div|p|span)><br>#', '</$1>', $sentence);
echo $newS;
?>

Re: Remplacer le retour a la ligne par du vide

Posté : 02 janv. 2014, 04:42
par rimie
merci ikkiphenix, j'ai tente par preg_match apres foreach dans une boucle, et le code plante au niveau de la balise "p", c'est quoi l'erreur exactement:
<?php
$sentence = '<div class="x">Hello there Line 1</div>';
$sentence .= '<br>';
$sentence .= '<div class="x">Hello there Line 2</div>';
$sentence .= '<br>';
$sentence .= '<p class="x">Hello there Line 3</p>';
$sentence .= '<br>';
$sentence .= '<span>Hello there Line 4</span>';
$sentence .= '<br>';

echo $sentence.'<br /><br /><br />';

$toRep = array('ul', 'p', 'div');

//$newS = preg_replace('#</(div|p|span)><br>#', '</$1>', $sentence);
 
foreach($toRep as $v)
    {  
if (preg_match("#</$v><br>#", $sentence)) {  
      $newS = preg_replace("#</$v><br>#", "</$v>", $sentence);
    //echo $v.' found<br />';
} else {
    $newS = 'Error';
}
    }
?>

Re: Remplacer le retour a la ligne par du vide

Posté : 02 janv. 2014, 16:29
par ikkiphenix
et le code plante au niveau de la balise "p"
Tu dis ça parce-que tu as un message d'erreur ? Ou la balise <p> n'est pas traitée ?

Re: Remplacer le retour a la ligne par du vide

Posté : 03 janv. 2014, 04:18
par rimie
et le code plante au niveau de la balise "p"
Tu dis ça parce-que tu as un message d'erreur ? Ou la balise <p> n'est pas traitée ?
avec preg_match la balise p est trouvee, alors que "br" qui est apres la balise p n'est pas traite