Page 1 sur 1

Supprimer un br dans une chaine

Posté : 15 août 2015, 10:22
par blinz
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>

Re: Supprimer un br dans une chaine

Posté : 15 août 2015, 16:34
par nestecha
<?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.

Re: Supprimer un br dans une chaine

Posté : 15 août 2015, 17:55
par Vince32
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);

Re: Supprimer un br dans une chaine

Posté : 24 août 2015, 23:24
par blinz
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>

Re: Supprimer un br dans une chaine

Posté : 24 août 2015, 23:29
par or 1
nl2br mets <br /> et non <br>

Re: Supprimer un br dans une chaine

Posté : 24 août 2015, 23:31
par blinz
meme en remplacant
echo preg_replace('/<br>/', '', $sVar , 1);
par
echo preg_replace('/<br />/', '', $sVar , 1);
ca ne change rien ....

Re: Supprimer un br dans une chaine

Posté : 25 août 2015, 10:06
par Ryle
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 ?

Re: Supprimer un br dans une chaine

Posté : 28 août 2015, 22:18
par Vince32
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().

Re: Supprimer un br dans une chaine

Posté : 31 août 2015, 12:13
par Ryle
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 />.