Si j'ai une variable:
$var1 = "Line 1 info blah blah <br /> Line 2 info blah blah";
Et une zone de texte:
<textarea>echo $var1</textarea>
Comment puis-je obtenir que la zone de texte affiche une nouvelle ligne au lieu d'afficher le texte sur un seul comme avec un <br />
?
Edit: J'ai essayé les solutions suivantes:
<textarea class="hobbieTalk" id="hobbieTalk" name="hobbieTalk" cols="35" rows="5" onchange="contentHandler('userInterests',this.id,this.value,0)"><?php
$convert=$_SESSION["hobbieTalk"];
$convert = str_replace("<br />", "\n", $convert);
echo $convert;
?></textarea>
Toutefois, la zone de texte contient toujours les balises br
dans les lignes.
Essaye celui-là
<?
$text = "Hello <br /> Hello again <br> Hello again again <br/> Goodbye <BR>";
$breaks = array("<br />","<br>","<br/>");
$text = str_ireplace($breaks, "\r\n", $text);
?>
<textarea><? echo $text; ?></textarea>
je suis utiliser suite à la construction pour reconvertir nl2br
function br2nl( $input ) {
return preg_replace('/<br\s?\/?>/ius', "\n", str_replace("\n","",str_replace("\r","", htmlspecialchars_decode($input))));
}
ici, j'ai remplacé les symboles \n
et \r
à partir de $ input car nl2br ne les supprime pas et cela provoque une sortie incorrecte avec \n\n
ou \r<br>
.
Voici une autre approche.
class orbisius_custom_string {
/**
* The reverse of nl2br. Handles <br/> <br/> <br />
* usage: orbisius_custom_string::br2nl('Your buffer goes here ...');
* @param str $buff
* @return str
* @author Slavi Marinov | http://orbisius.com
*/
public static function br2nl($buff = '') {
$buff = preg_replace('#<br[/\s]*>#si', "\n", $buff);
$buff = trim($buff);
return $buff;
}
}
EDIT: la réponse précédente était en arrière de ce que vous vouliez. Utilisez str_replace . Remplacez <br>
par\n
echo str_replace('<br>', "\n", $var1);
<?php
$var1 = "Line 1 info blah blah <br /> Line 2 info blah blah";
$var1 = str_replace("<br />", "\n", $var1);
?>
<textarea><?php echo $var1; ?></textarea>