<textarea> felesleges sortörések kiszedése
Sziasztok!
Elsőnek is Boldog Újévet kívánnék mindenkinek!
A problémám a következő van egy <textarea> mezőm amin ellenőrzöm a beírható karaktereket. Mármost a beviteli mezőt hülyeség ellen szeretném levédeni úgy hogy ne lehessen végtelenségig sortörést alkalmazni. Én úgy gondoltam volna hogy az adatbázis féltöltése előtt kiszedném a felesleges sortöréseket.
És így max 2 sortörés lehetne egymás után.
De mivel hogy mindig előkerül egy ráérő illető így még pluszba valahogyan azt is meg kellene oldani hogy maximálni lehessen a sortörések számát.
Így elkerülve azt hogy 500db karakter kerüljön egymás alá.
Most jelen pillanatban így használom.
■ Elsőnek is Boldog Újévet kívánnék mindenkinek!
A problémám a következő van egy <textarea> mezőm amin ellenőrzöm a beírható karaktereket. Mármost a beviteli mezőt hülyeség ellen szeretném levédeni úgy hogy ne lehessen végtelenségig sortörést alkalmazni. Én úgy gondoltam volna hogy az adatbázis féltöltése előtt kiszedném a felesleges sortöréseket.
És így max 2 sortörés lehetne egymás után.
De mivel hogy mindig előkerül egy ráérő illető így még pluszba valahogyan azt is meg kellene oldani hogy maximálni lehessen a sortörések számát.
Így elkerülve azt hogy 500db karakter kerüljön egymás alá.
Most jelen pillanatban így használom.
$tartalom=$_POST["tartalom"];
$hirdetes_tartalom='/^[a-zA-Z0-9áéíóöőúüűÁÉÍÓÖŐÚÜŰ.\s\,\!\?\/-]{0,500}$/s';
//ellenőrzés
if(!preg_match($hirdetes_tartalom, $tartalom))
{
print("<div id='hiba'>Leirás csak betűket, számokat, szóközt . , - ! ? / tartalmazhat és maximum 500 karakter lehet!</div>");
$hiba=1;
}
<form>
<textarea name="tartalom" id="tartalom" style="overflow:auto;resize:none" rows="15" cols="97" onKeyDown="textCounter(this.form.message,this.form.remLen,500);"
onKeyUp="textCounter(this.form.tartalom,this.form.remLen,500);">
<?php if (isset ($_POST["tartalom"])) { print htmlspecialchars($_POST["tartalom"] , ENT_QUOTES); }?>
</textarea>
<input readonly type=text name=remLen size=3 maxlength=3 value=500 /> karakter <br>
</form>
$hirdetes_tartalom='/^[a-zA-Z0-9áéíóöőúüűÁÉÍÓÖŐÚÜŰ.\s\,\!\?\/-]{0,500}$/s';
//ellenőrzés
if(!preg_match($hirdetes_tartalom, $tartalom))
{
print("<div id='hiba'>Leirás csak betűket, számokat, szóközt . , - ! ? / tartalmazhat és maximum 500 karakter lehet!</div>");
$hiba=1;
}
<form>
<textarea name="tartalom" id="tartalom" style="overflow:auto;resize:none" rows="15" cols="97" onKeyDown="textCounter(this.form.message,this.form.remLen,500);"
onKeyUp="textCounter(this.form.tartalom,this.form.remLen,500);">
<?php if (isset ($_POST["tartalom"])) { print htmlspecialchars($_POST["tartalom"] , ENT_QUOTES); }?>
</textarea>
<input readonly type=text name=remLen size=3 maxlength=3 value=500 /> karakter <br>
</form>
substr_count()
substr_count()
függvény összeszámolja, hányszor fordul elő egy karaktersor egy szövegben. Így hasubstr_count("\n", $tartalom) > 500
, akkor hibát dobsz.Úgy látom, a "max két sortörés egymás alatt" sincs még implementálva: ennél majd figyelj arra, hogy üresnek tekints (és azzá is konvertálj) minden olyan sort, amiben nincs látható karakter (tehát pl. csak szóköz és/vagy tabulátor karakter van benne).
preg_replace()
Közben meg ezt találtam.
Csak az a kérdés hogy ezzel mit tudnék kezdeni?
Plusz hogy ha jól sejtem akkor a kiíratásnál tudnám használni.
$text = preg_replace(/(\r?\n){3,}/, "", $text);
Pontosan ez mire is való?
:)
Limitálás
Ezzel együtt az egymást követő, kettőnél több sortöréseket pedig (a körülöttük lévő üreskarakterekkel együtt) átalakítod bevitelkor két sortörésre.
trim()
-melni a szöveget, illetve az összes sortörésnél is eltávolítani az esetleges körülöttük lévő üreskaraktereket (ez a fenti példából már könnyeden átalakítható).Limitálás
Akkor kezdjük a legelején.
Mármost ha jól értelmezem akkor a preg_replace-el tudom szűrni a bevitt sortöréseket?
Tehát ha a kódot beillesztem az oldalamra akkor ha 3-rom bekezdésnél több van az oldalon akkor hibaüzenetet tudok küldeni a felhasználónak hogy kevesebb üres sort használjon.
Valami ilyesmi képen:
Szűrni?
Szerk.: a példádban előbb kicseréled az összes 3 vagy több sortörést (nem látható karakterekkel együtt) 2 linuxos sortörésre, ezután, ha változott a szöveg, hibát jelzel.
Döntsd el, hogy javítani akarsz, vagy hibaüzit küldeni, mert ha már kijavítottad, akkor a többi felesleges. Majd látja a tréfás Júzer, hogy nem sikerült a tréfa...
Így kettő marad