Re: odradkovani v PHP

From: Paco (paco@seznam.cz)
Date: 03. 07. 2002, 13:50 CEST


>> nevite nekdo, jak v PHP nastavit, aby kazde odradkovani (odenterovani)
>> prevedla stranka automaticky na HTML odradkovani <BR>? Presneji, aby
>> sel ve formulari zadat odradkovany text a stejne tak ho i zobrazil?
>> Nocni motylek

> http://www.php.net/manual/en/function.nl2br.php
> -pp21-

Mala poznamka k fci nl2br().

Na Win muze delat (a dela) nl2br trosku rotyku. :) Nemusi
to vzdy nutne vadit a casto, pri pouhem zobrazeni textu
taky vetsinou nevadi, ale pokud chces s tim textem dale
pracovat na nizsi urovni, je treba to osetrit trochu vic
bulletproof.

nl2br totiz nedela nic jineho, nez ze PRED kazdy newline
ve stringu vlozi html break. Jako newline je ovsem bezne
chapan pouze znak LF, cili chr(10) tak, jak je radkovan
text na UN*Xech. Da-li se nl2br ke zpracovani Win (DOS)
text, tak to dopadne takto: [CR je chr(13) a LF je chr(10)]

<!-- (aby html mailery nezalomily na <br>)

Puvodni string: radek1CRLFradek2CRLFradek3CRLF
Po nl2br: radek1CR<br>LFradek2CR<br>LFradek3CR<br>LF

To znamena, ze po zpracovani v nl2br je pred kazdym <br>
prebytecny znak CR, coz pro zobrazeni v browseru nemusi
vadit (bude z toho mezera pred breakem), ale pri dalsim
zpracovani textu na urovni znaku to pak muze delat 'zahadne
a nevysvetlitelne' chyby, ktere se pak daji casto objevit
az pouzitim hexaeditoru. Taky LF za <br> muze byt nekdy
nezadouci.

Ja na tuhle pasticku pouzivam vlastni fci:

/*
function to_break($txt,$break){
	$repl="<br>".($break?"\r\n":"");
return ereg_replace("\n|(\r\n)",$repl,$txt);
}
*/

Ta pak vrati spravne konvertovany text nezavisle na
puvodnich koncich radku. Druhy parametr break slouzi
k vypnuti/zapnuti (0|false/1|true) CRLF po <br>:

radek1<br>radek2<br>radek3<br> nebo
radek1<br>CRLFradek2<br>CRLFradek3<br>CRLF
--> 

pako Paco. 


______________________________________________________________________
Reklama:
WWW stranky zdarma na http://www.sweb.cz



This archive was generated by hypermail 2.1.2 : 03. 07. 2002, 13:50 CEST