Regex - \n és \r probléma
Üdv mindenkinek !
Nem találtam Regex-es topicot, ezért ide írom. A problémám, hogy kicsit belegabalyodtam a textarea sortöréseibe. Azt szeretném megoldani kommentek feldolgozásánál, hogy a 2db, vagy több üres sort, a rendszer cserélje le 1db üres sorra. Hogy "szépen" nézzenek ki a kommentek. Ha jól tudom, akkor a textarea-ban minden sortörést egy "\n\r"-karakterpáros jelez, tehát ez jelzi az "Enter"-eket. Próbálkoztam a következő regex-el :
De ez sajnos nem működik. Próbáltam a következőt is hogy a sorok elejére illeszkedjen :
De ez se lett jó :( Valaki tudna esetleg segíteni ? Tehát a kettő vagy több üres sort cseréljük le egy üres sorra. A választ előre is köszönöm.
■ Nem találtam Regex-es topicot, ezért ide írom. A problémám, hogy kicsit belegabalyodtam a textarea sortöréseibe. Azt szeretném megoldani kommentek feldolgozásánál, hogy a 2db, vagy több üres sort, a rendszer cserélje le 1db üres sorra. Hogy "szépen" nézzenek ki a kommentek. Ha jól tudom, akkor a textarea-ban minden sortörést egy "\n\r"-karakterpáros jelez, tehát ez jelzi az "Enter"-eket. Próbálkoztam a következő regex-el :
$input = preg_replace("/\n\r\n\r(?:\n\r)+/","<br /><br/>", $input);
De ez sajnos nem működik. Próbáltam a következőt is hogy a sorok elejére illeszkedjen :
$input = preg_replace("/^\n\r(?:\n\r)+/","<br />", $input);
De ez se lett jó :( Valaki tudna esetleg segíteni ? Tehát a kettő vagy több üres sort cseréljük le egy üres sorra. A választ előre is köszönöm.
Még valami
$input = preg_replace("/(?:^$)+/","<br />", $input);
meghatározassal is, (ami szintén nem hozott sikert - mi több, ez konkrétan semmit se csinál), de még a következő fejlett sorhorgony illesztéssel is :
$input = preg_replace("/(?:^$)+/m","<br />", $input);
ha netán, esetleg. De egyik se lett jó. Most már kezdek ideges lenei, mert a probléma igazán egyszerű :D
\n
Szerk: akkor itt felülbírálom magam ezek tükrében, valóban \r\n :)
\n\r != \r\n
Azaz sor vége - új sor. és nem új sor - sor vége.
Legalábbis én még csak így találkoztam vele. Nem lehet, hogy csak ez a baj?
Igazad van :)
Windows
Persze a weben szinte mindenhol csak \n-t használunk.
Értem
$input = preg_replace("/\r\n\r\n(?:\r\n)+/","<br /><br />", $input);
Majd mégegyszer végigmegyek, és a maradék \r\n -eket <br /> ekké alakítom :
$input = preg_replace("/\r\n/","<br />", $input);
Ez tökéletesen működik.
De ahogy mondtad linux alatt \n van, arra pedig ez nem fog működni. Mi lenne ha átírnám eképpen ?
$input = preg_replace("/\r?\n\r?\n(?:\r?\n)+/","<br /><br />", $input);
majd :
$input = preg_replace("/\r?\n/","<br />", $input);
Így a \r -ek opcionálisak, tehát elméletileg a kifejezés most már Linux kompatibilis is. Remélem jó a megoldás.
\R