Tänk att ni har ett textfält där en användare kan skriva in artiklar, i de flesta fallen så är det simpel HTML som används, dvs, <b><i> etc.
Men ibland så vill användaren göra mer komplexa saker, tex lägga in tables och kanske en <textarea>. Då blir det ju en massa strul när man ska formatera datan från databasen med nl2br.
För då blir det ju en <br /> efter varje radbrytning man gör när man skapar tabellen. I en <textarea> blir det också fel eftersom den inte tar med <br /> taggar...
Hur löser man det på ett smidigt sätt? Så att vissa delar görs till nl2br och andra inte... I samma artikel?
Jo, det är så att jag postar information från ett formulär in i databasen. När jag sedan presenterar den här informationen så kör jag nl2br på allt. Och det funkar jättebra så länge informationen inte innehåller exempelvis tables. Då blir det istället så här:
<table><br>
<tr><br>
<td><br>
Och det var ju inte direkt det jag ville ha. Det funkar iofs om man tar bort radbrytningarna så att det blir <table><tr><td>, men om jag nu istället skulle vilja ha en textarea i det som jag postar och vill ha radbrytningar inuti denna textarea så måste jag ju visa det i det jag postar. Men när man hämtar ut det från databasen så visas det som <br /> i textarean, vilket jag naturligtvis inte vill.
Vet inte om du förstår mig bättre... Men jag vill alltså att enbart den text jag skriver in skall vara nl2br, inte min html kod.... typ....
det där låter svårt att få ihop med enbart nl2br tyvärr =/
Jag hade nog försökt lösa det genom att utveckla ett eget "html språk" t.ex. som lunarstorm har till sina krypin om du har varit inne där.
där kan du typ skriva <streck> så får du en egentlig <hr> på ditt krypin.
Gör t.ex. <start_tabell> till <table> (med replace), på detta sättet kommer du kunna kontrollera så det blir exakt som man vill ha det, du kan t.ex. innan du skriver det i databasen kontrollera så det inte är någon /n efter <start_tabell> och om det är det kan du radera det.
Sen borde det bara vara att köra funktionen som vanligt när du hämtar datan ur databasen med din nl2br
Skall börja knåpa på det här nu. Behöver lite hjälp med hur man går tillväga rent praktiskt.
Jag hämtar en artikel från databasen. Jag kommer i min artikel ha [NOBR] och [/NOBR] i den texten som jag inte vill att br skall påverka. Sedan vill jag söka reda på <br> och <br /> samt <br/> och ersätta detta med \r\n
function dbFormFix($text)
{
$text = preg_replace( "'\[NOBR\](.*?)\[/NOBR\]'is",'hej\\1',$text);
echo $text;
}
Den skriver ut hej innan texten jag hade innanför [NOBR]... Vad jag nu vill göra är att anropa en funktion i replacement delen. Och jag har läst och kollat och man skall tydligen använda sig av \e för att kunna tolka det som php-kod. Problemet är att om jag enbart använder mig av e så hittar den inte min text, jag måste således ha i och s, men då vill inte e vara med.