Supprimer un br dans une chaine

Eléphant du PHP | 372 Messages

15 août 2015, 10:22

Salut à tous.
Je récupère dans une variable mon contenu mais celui ci comporte un <br>à un endroit et souhaite le supprimer comment faire svp.

Je souhaite supprimer que le premier <br> de cette variable, merci à vous par avance :wink:

Le contenu de la variable:
<p>Rendez-vous au medecin de paris<br>
, en cas d'urgence veuillez contactez ....<br>

nestecha
Invité n'ayant pas de compte PHPfrance

15 août 2015, 16:34

<?php

function delete_first_occurrence($sNeedle, $sHaystack) {
	$iPos = strpos($sHaystack, $sNeedle);
	
	$sFinalString = substr($sHaystack, 0, $iPos);
	$sFinalString .= substr($sHaystack, ($iPos + strlen($sNeedle)));
	
	return $sFinalString;
}
$sVar = "<p>Rendez-vous au medecin de paris<br>
, en cas d'urgence veuillez contactez ....<br>";
echo htmlspecialchars(delete_first_occurrence('<br>', $sVar));
// Affiche "<p>Rendez-vous au medecin de paris , en cas d'urgence veuillez contactez ....<br>"
Tu auras juste à enlever htmlspecialchars pour que le code HTML soit pris en compte par ton navigateur.

Eléphanteau du PHP | 42 Messages

15 août 2015, 17:55

Salut,

tu peux aussi utiliser :

Code : Tout sélectionner

$sVar = "<p>Rendez-vous au medecin de paris<br> , en cas d'urgence veuillez contactez ....<br>"; echo preg_replace('/<br>/', '', $sVar, 1);

Eléphant du PHP | 372 Messages

24 août 2015, 23:24

J'ai essayer ceci mais ça ne marche pas ....
<?php
$sVar = stripslashes(nl2br($ligne['description']));

echo preg_replace('/<br>/', '', $sVar , 1);
?>

                <div class="product-description col-md-12"><p><?php if($ligne['description'] == NULL) { echo "Non renseigné";} else {echo $sVar;}?></p></div>

Mammouth du PHP | 2703 Messages

24 août 2015, 23:29

nl2br mets <br /> et non <br>

Eléphant du PHP | 372 Messages

24 août 2015, 23:31

meme en remplacant
echo preg_replace('/<br>/', '', $sVar , 1);
par
echo preg_replace('/<br />/', '', $sVar , 1);
ca ne change rien ....

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

25 août 2015, 10:06

Bonjour,

La fonction preg_replace() dans le code ci-dessus va pourtant bien remplacer le premier <br> (ou <br /> dans le second cas) par une chaine vide dans $sVar. Si le résultat obtenu n'est pas celui que tu attends, c'est que ton analyse du problème n'est pas la bonne.

Le fait d'utiliser nl2br ajoute effectivement des balises <br /> à chaque "\n" rencontré dans la chaine. Si ta chaine comportait déjà des <br>, tu auras en plus des <br /> et donc potentiellement 2 retours à gérer... Si tu ne nous indiques pas le contenu exacte de ta variable et le résultat attendu, il sera difficile de t'aider... :)

Que contient $sVar (ou $ligne['description']) précisément ?
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 42 Messages

28 août 2015, 22:18

Salut,

lorsque tu as fait nl2br() sur ta variable tu a rajouté <br> à la place de \n
donc
<p>Rendez-vous au medecin de paris<br>
, en cas d'urgence veuillez contactez ....<br>
devient
<p>Rendez-vous au medecin de paris<br><br>, en cas d'urgence veuillez contactez ....<br>
si par la suite tu enlève <br> avec
echo preg_replace('/<br>/', '', $sVar, 1);
seul le premier <br> sera remplacé

je te suggère de faire directement
echo preg_replace('/<br>/', '', $sVar, 1);
sur ta chaîne initiale sans utiliser nl2br().

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

31 août 2015, 12:13

lorsque tu as fait nl2br() sur ta variable tu a rajouté <br> à la place de \n
Une petite précision : nl2br(), contrairement à ce que son nom peut laisser penser "ne remplace pas" les retours chariot "\r\n, \n\r, \n et \r" par des "<br />" (ou "<br>" en fonction de la compatibilité xhtml spécifié dans le second argument de la fonction), mais "ajoute" ces balises avant les retours chariot.
<p>Rendez-vous au medecin de paris<br>
, en cas d'urgence veuillez contactez ....<br>
devient donc après un simple appel à nl2br()
<p>Rendez-vous au medecin de paris<br><br />
, en cas d'urgence veuillez contactez ....<br>
Tu peux utiliser nl2br($taChaine, false) pour que la balise html insérée ne soit pas en xhtml et ainsi avoir un <br> au lieu de <br />.
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...