Autor | Zpráva | ||
---|---|---|---|
Camo Profil |
#1 · Zasláno: 21. 3. 2011, 10:16:23
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. Skúšal som to už všeliako napr. (.|\n) alebo ([.\n]) ([.\s]) modifikator m atd. ale nič nepomáha... Nevie niekto v čom to je? Ďakujem... <!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> |
||
Camo Profil |
#2 · Zasláno: 21. 3. 2011, 19:49:52 · Upravil/a: Camo
Tak som to konečne zistil. Rieši sa to takto: ([\s\S]*)
http://www.regular-expressions.info/javascript.html |
||
Camo Profil |
#3 · Zasláno: 21. 3. 2011, 20:45:08 · Upravil/a: Camo
Ešte ak dovolíte, tak mám s tým problém. Potreboval by som U modifikátor, ktorý JS nepozná. Totiž ak mám
<code> <?php echo "jjjj"; ?> </code> <div style="background-color:red">dgsdfgsdg</div> <code> <?php echo "jjjj"; ?> </code> tak aj ten div mi oescapuje, co nechcem. Skúšal som to cez otáznik za kvantifikatorom (<\/code>)?? ale neberie mi to. Nevie niekto ako na to? Kód dole si stačí pastnuť a bude fungovať. Je tam aj komentar, ktorý si môžete skopírovať do tej textarey... <!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> |
||
YoSarin Profil |
#4 · Zasláno: 22. 3. 2011, 00:17:43
Camo:
Obávám se, že ten otazník jsi zkoušel na špatném místě: var codeText=text.replace(/<code>([\s\S]+?)(<\/code>)/g, replaceLev2); |
||
Camo Profil |
#5 · Zasláno: 22. 3. 2011, 14:45:02 · Upravil/a: Camo
YoSarin
Dík, to je ono. Ak by sa niekomu chcelo tak mi napíšte svoje pripomienky k tomuto kódu... Final version: <!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:\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> |
||
Časová prodleva: 13 let
|
0