| | |
| Stránka: 1 z 1
| [ Príspevkov: 12 ] | |
Autor | Správa |
---|
Registrovaný: 05.09.09 Príspevky: 1141 Témy: 127 Bydlisko: Lehota pod ... | Napísal camo: 19.03.2011 23:00 | |
|
Zdravím vás!
Chcel som urobiť takú funkciu, ktorá by v texte ohraničenom tagom <code> nahradila znaky <>"& za entity. Text na spracovanie dostáva z textarey. Keď si skopírujete kód čo som sem prilepil tak to bude fungovať. Ale len dovtedy, kým neodriadkujete ten text na niektorom mieste.
Skúšam to už pol ďňa, ale už neviem v čom to môže byť... Proste ten regulár skončí na konci riadku. Dal som tam aj modifikátor m, ale nič sa nezmenilo...
Nevie niekto v čom to je?
Kód: <!DOCTYPE HTML public "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <style> html, body{height:100%; margin:0px; padding:0px; font:1em Verdana} #obal{width:960px; margin:0px auto; padding:50px 0px; background-color:#dddddd; padding-top:50px} textarea, input{display:block; margin:10px auto; width:800px;} code{display:block; padding:10px; background-color:#ddeeff} </style> <script type-"text/javascript">
function replaceLev1(text){ var codeText=text.replace(/(<code>)(.*)(<\/code>)/gm, replaceLev2); var idcko1 = document.getElementById('idcko1'); idcko1.innerHTML = codeText; alert("Toto je idcko1.innerHTML:\n\n"+codeText);
function replaceLev2(match, x1, x2, x3, pos, orginal){ return x2.replace(/[<>&"]/mg, replaceLev3);
function replaceLev3(match2, pos, originalx2){ switch(match2){ case "<" : return "<"; case ">" : return ">"; case '"' : return """; case "&" : return "&"; } } } }
</script> </head> <body style=""> <div id="obal"> <form name="formika" action="bla.php" method="post"> <textarea name="area" id="textik" cols="50" rows="20"><code><?php echo "jjjj"; ?></code></textarea> <a href="#" onclick="replaceLev1(document.getElementById('textik').value); return false">click</a> </form>
<div id="idcko1" style=""> </div>
</div> </body> </html>
|
|
Registrovaný: 13.11.07 Prihlásený: 20.08.16 Príspevky: 1702 Témy: 0 | Napísal chrono: 20.03.2011 12:39 | |
|
Bodka v regexp (v javascripte) nefunguje pre prechod na nový riadok.
|
|
Registrovaný: 05.09.09 Príspevky: 1141 Témy: 127 Bydlisko: Lehota pod ... | Napísal autor témy camo: 21.03.2011 9:20 | |
|
No to napríklad ani v PHP, ale tam sa to rieši cez modifikátor s. V Javascripte ako? Skúšal som to napísať už všeliako ([.\n\s]) alebo ([.\n]) alebo že (.|\n) atd. ale nič nepomáha.
|
|
Registrovaný: 11.08.07 Príspevky: 4088 Témy: 34 Bydlisko: Brno | Napísal Ďuri: 21.03.2011 17:04 | |
|
|
|
Registrovaný: 05.09.09 Príspevky: 1141 Témy: 127 Bydlisko: Lehota pod ... | Napísal autor témy camo: 21.03.2011 17:46 | |
|
Ďuri:
Funguje to? Lebo u mňa nie. Dnes som našiel riešenie tejto veci:
Kód: ([\s\S.]*)
na http://www.regular-expressions.info/javascript.html ,ale ešte som to sem nenalepil, lebo s tým mám teraz ďalší problém a síce, že neviem ako simulovať modifikátor U. Keď napisem <code>bla</code><div>BLA</div><code>bla</code> tak aj ten div mi oescapuje.
|
|
Registrovaný: 11.08.07 Príspevky: 4088 Témy: 34 Bydlisko: Brno | Napísal Ďuri: 21.03.2011 17:49 | |
|
Neviem, neskusal som, to tvoje ti isto bude fungovat. Ale tu bodku tam nepotrebujes, aj tak v hranatych zatvorkach nema vyznam hocijakeho znaku, ale proste bodky, a tu mas zahrnutu v \S.
Modifikator U nasimulujes pridanim ? za kvantifikator, cize napr. .*?.
|
|
Registrovaný: 13.11.07 Prihlásený: 20.08.16 Príspevky: 1702 Témy: 0 | Napísal chrono: 21.03.2011 20:37 | |
|
Tá verzia (.|\n)* mi fungovala.
|
|
Registrovaný: 05.09.09 Príspevky: 1141 Témy: 127 Bydlisko: Lehota pod ... | Napísal autor témy camo: 21.03.2011 21:19 | |
|
chrono:
Sranda, fakt to funguje...
Ďuri:
No neviem, neberie mi to...
Mám to teraz takto(je tam aj komentar ktory tam mozete pastnut):
Kód: <!DOCTYPE HTML public "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <style> html, body{height:100%; margin:0px; padding:0px; font:1em Verdana} #obal{width:960px; margin:0px auto; padding:50px 0px; background-color:#dddddd; padding-top:50px} textarea, input{display:block; margin:10px auto; width:800px;} code{display:block; padding:10px; background-color:#ddeeff} </style> <script type-"text/javascript">
function replaceLev1(text){ var codeText=text.replace(/<code>([\s\S.]*)(<\/code>)??/g, replaceLev2); alert(codeText); codeText = codeText.replace(/^[\s\S]?<br>/, ''); codeText = codeText.replace(/<br>$/, ''); var idcko1 = document.getElementById('idcko1'); idcko1.innerHTML = '<code>'+codeText+'</code>'; alert("3>>Toto je idcko1.innerHTML:\n\n"+codeText);
function replaceLev2(match, x1, x2, x3, pos, orginal){ return x1.replace(/[<>&"\n]/mg, replaceLev3);
function replaceLev3(match2, pos, originalx2){ switch(match2){ case "<" : return "<"; case ">" : return ">"; case '"' : return """; case "&" : return "&"; case '\n' : return "<br>"; } } } }
/* <code> <?php echo "jjjj"; ?> </code> <div style="background-color:red">dgsdfgsdg</div> <code> <?php echo "jjjj"; ?> </code> */
</script> </head> <body style=""> <div id="obal"> <form name="formika" action="bla.php" method="post"> <textarea name="area" id="textik" cols="50" rows="20"><code><?php echo "jjjj"; ?></code></textarea> <a href="#" onclick="replaceLev1(document.getElementById('textik').value); return false">click</a> </form>
<div id="idcko1" style=""> </div>
</div> </body> </html>
Skúšal som to dať aj celé do zátvorky a za to dva krát "?"(vtedy ešte treba zmeniť x1 a x2). Ale nič... Ešte idem vyskúšať záporné tvrdenia...
// pridané po 42 minútach od posledného príspevku
|
|
Registrovaný: 13.11.07 Prihlásený: 20.08.16 Príspevky: 1702 Témy: 0 | Napísal chrono: 21.03.2011 21:45 | |
|
Ten ? sa dáva za *
|
|
Registrovaný: 05.09.09 Príspevky: 1141 Témy: 127 Bydlisko: Lehota pod ... | Napísal autor témy camo: 21.03.2011 22:16 | |
|
Ako???
Skúšam všetko možné a nič.
/<code>([\s\S]*)(<\/code>)*?/g
/(<code>([\s\S]*)<\/code>)*?/g
/<code>([\s\S]*)(<\/code>)?/g
Malo by byť jedno či hviezndička či otáznik nie?
|
|
Registrovaný: 11.08.07 Príspevky: 4088 Témy: 34 Bydlisko: Brno | Napísal Ďuri: 22.03.2011 13:51 | |
|
Myslim, ze potrebujes skor toto:
Kód: /<code>[\s\S]*?<\/code>/g
|
|
Registrovaný: 05.09.09 Príspevky: 1141 Témy: 127 Bydlisko: Lehota pod ... | Napísal autor témy camo: 22.03.2011 14:50 | |
|
Ďuri:
To je ono, díki..
Ak by sa niekomu chcelo tak mi napíšte pripomienky k tomuto kódu...
Final version:
Kód: function replaceLev1(text){ var codeText=text.replace(/<code>([\s\S]*?)<\/code>/g, replaceLev2); alert('codeText:\n\n'+codeText); var idcko1 = document.getElementById('idcko1'); idcko1.innerHTML = codeText; alert("idcko1.innerHTML:\n\n"+codeText);
function replaceLev2(match, x1, x2, x3, pos, orginal){ x1 = x1.replace(/[<>&"\n]/mg, replaceLev3); x1 = x1.replace(/^[\s\S]?<br>/, ''); x1 = x1.replace(/<br>$/, ''); return '<code>'+x1+'</code>';
function replaceLev3(match2, pos, originalx2){ switch(match2){ case "<" : return "<"; case ">" : return ">"; case '"' : return """; case "&" : return "&"; case '\n' : return "<br>"; } } } }
/* <code> <?php echo "jjjj"; ?> </code> <div style="background-color:red; margin:10px 0px">dgsdfgsdg</div> <code> <?php echo "jjjj"; ?> </code> */
</script> </head> <body style=""> <div id="obal"> <form name="formika" action="bla.php" method="post"> <textarea name="area" id="textik" cols="50" rows="20"><code><?php echo "jjjj"; ?></code></textarea> <a href="#" onclick="replaceLev1(document.getElementById('textik').value); return false">click</a> </form>
<div id="idcko1" style=""> </div>
</div> </body> </html>
|
|
| Stránka: 1 z 1
| [ Príspevkov: 12 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| Asus S400CA - rapídne vybitie, viac nefunguje v Notebooky a netbooky | 1 | 252 | 17.03.2017 22:48 void | | MySQL - úbytky/prírastky v riadkoch (po týždni) v Databázy | 6 | 642 | 11.05.2010 7:44 coldak | | Replace text v JavaScript, VBScript, Ajax | 5 | 480 | 28.05.2012 13:49 xxx9955 | | Replace Textu v PHP, ASP | 12 | 602 | 05.08.2009 9:52 p360t | | Regex replace v Ostatné | 5 | 382 | 02.07.2021 14:53 MTK | | PHP replace help v PHP, ASP | 4 | 667 | 13.04.2008 19:31 Ded'leg | | Replace Text on web v JavaScript, VBScript, Ajax | 2 | 480 | 28.03.2009 12:43 Frees | | F1 Challenge (Viac verzii/viac problemov) v Počítačové hry | 3 | 1016 | 19.08.2009 21:03 f4r0 | | String v PHP, ASP | 2 | 615 | 19.04.2010 21:20 Antuanet | | std::string v Assembler, C, C++, Pascal, Java | 2 | 689 | 01.01.2010 0:20 koso | | Java String v Assembler, C, C++, Pascal, Java | 4 | 1174 | 31.03.2010 22:00 ado21 | | Connection String v Technológia .NET | 3 | 1635 | 10.09.2009 12:21 TJ | | pascal: string 255+ v Assembler, C, C++, Pascal, Java | 4 | 558 | 03.02.2011 18:08 juho | | Java int = string v Assembler, C, C++, Pascal, Java | 4 | 505 | 17.02.2016 20:33 neutroN | | String od do v Delphi, Visual Basic | 1 | 626 | 30.11.2009 18:55 ha2 | | Invalid system disk replace the disk and press any key v Operačné systémy Microsoft | 5 | 832 | 26.04.2008 6:20 mig07 |
| Nemôžete zakladať nové témy v tomto fóre Nemôžete odpovedať na témy v tomto fóre Nemôžete upravovať svoje príspevky v tomto fóre Nemôžete mazať svoje príspevky v tomto fóre
|
|