Autor | Zpráva | ||
---|---|---|---|
novacek_v_php Profil * |
#1 · Zasláno: 16. 1. 2011, 21:24:19
Ahoj,
měl bych takový dotaz. Uživatelé mi na webu píší komentáře (umožnují pouze text, žádné html značky) a problém nastává, když někdo napíše komentář s 50ti řádky (prázdnými), např: testovaci text testovaci text v šabloně to vypisuji takto: $body = nl2br(htmlspecialchars($o->body)); a na webu se mi tedy zobrazí i 50 prázdných řádků. Lze nějakým jednoduchým způsobem zabránit tomu, aby se na vypisovaly více než 2 řádky? Znamená to tedy, nahradit výsledné "<br /><br /><br />" za "". Jde o to, aby někdo neudělal třeba 1000 enterů a mě to nenatáhlo stránku o 2000px.. což je docela nepříjemné. $body = str_replace("\n\n\n", "", $body) \n Děkuji za rady |
||
Tori Profil |
#2 · Zasláno: 16. 1. 2011, 21:28:48
Koukněte na toto vlákno.
|
||
SwimX Profil |
#3 · Zasláno: 16. 1. 2011, 21:33:04
novacek_v_php:
> \n > neoznačuje odřádkování? zkuste \r\n $body = str_replace("\n\n\n", "", $body) před řádkou $body = nl2br(htmlspecialchars($o->body)); jinak už žádné \r\n |
||
AM_ Profil |
#4 · Zasláno: 16. 1. 2011, 22:04:24 · Upravil/a: AM_
SwimX:
„$body = str_replace("\n\n\n", "", $body)“ to je trošku nešikovné rušit řádky po trojicích - pokud někdo napíše třeba: lorem ipsum stane se z toho loremipsum což je divné. Tohle je chytřejší řešení: preg_replace("~[\r\n]+~", "\r\n", smrskne libovolný počet odřádkování v jedno. Pokud bys chtěl povolit třeba dvě odřádkování za sebou tak už je to horší, fungovalo by preg_replace("~[\r\n]{6,}~", "\r\n", ovšem pro \r\n to povolí 3 řádky a pro \n jich to povolí 6. Momentálně mě nenapadá lepší. //edit: lordfrikkovo řešení je evidentně lepší, tenhle trik jsem neznal. Samotného by mě zajímalo, co vlastně umí konstrukce ?: //mé ponaučení: negooglete podle klíčového slova "preg". evidentně se častěji než "preg_replace" vyskytuje "pregnancy". |
||
novacek_v_php Profil * |
#5 · Zasláno: 16. 1. 2011, 22:33:25
Ok,
děkuji všem za rady, dnes už nemám čas odzkoušet, tak na to mrknu zítra večer. Ještě jednou děkuji za ochotu a snahu pomoct. |
||
lordfrikk Profil |
#6 · Zasláno: 16. 1. 2011, 23:05:46 · Upravil/a: lordfrikk
Tohle by mělo spolehlivě zajistit to co požaduješ. Nalezne to v textu 2 a více odřádkování za sebou (kontroluje všechny typy odřádkování - jsou jinačí pro Windows, unix a starší Mac OS) a zamění jej za jedno.
<?php $text = 'bla bla'; $text = preg_replace("/(?:\n|\r\n?){2,}/", PHP_EOL, $text); echo nl2br($text); /* vysledek je: bla<br /> bla */ ?> |
||
Časová prodleva: 13 let
|
0