Remplacer le retour a la ligne par du vide

Mammouth du PHP | 725 Messages

30 déc. 2013, 06:43

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

Eléphant du PHP | 52 Messages

30 déc. 2013, 12:40

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; ?>
Image Zend Certified Engineer

Mammouth du PHP | 725 Messages

31 déc. 2013, 13:57

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

Eléphant du PHP | 52 Messages

31 déc. 2013, 23:29

<?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;
?>
Image Zend Certified Engineer

Mammouth du PHP | 725 Messages

02 janv. 2014, 04:42

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';
}
    }
?>

Eléphant du PHP | 52 Messages

02 janv. 2014, 16:29

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 ?
Image Zend Certified Engineer

Mammouth du PHP | 725 Messages

03 janv. 2014, 04:18

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