Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ Príspevkov: 12 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
string.replace na viac riadkoch nefunguje

Registrovaný: 05.09.09
Príspevky: 1141
Témy: 127
Bydlisko: Lehota pod ...
Príspevok NapísalOffline : 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 "&lt;";
            case ">" :
               return "&gt;";
            case '"' :
               return "&quot;";
            case "&" :
               return "&amp;";
          }
      }
   }
}

</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>


Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 13.11.07
Prihlásený: 20.08.16
Príspevky: 1702
Témy: 0
Príspevok NapísalOffline : 20.03.2011 12:39

Bodka v regexp (v javascripte) nefunguje pre prechod na nový riadok.


Offline

Užívateľ
Užívateľ
string.replace na viac riadkoch nefunguje

Registrovaný: 05.09.09
Príspevky: 1141
Témy: 127
Bydlisko: Lehota pod ...
Príspevok Napísal autor témyOffline : 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.


Offline

Čestný člen
Čestný člen
string.replace na viac riadkoch nefunguje

Registrovaný: 11.08.07
Príspevky: 4088
Témy: 34
Bydlisko: Brno
Príspevok NapísalOffline : 21.03.2011 17:04

Kód:
(.|\s)


Offline

Užívateľ
Užívateľ
string.replace na viac riadkoch nefunguje

Registrovaný: 05.09.09
Príspevky: 1141
Témy: 127
Bydlisko: Lehota pod ...
Príspevok Napísal autor témyOffline : 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.


Offline

Čestný člen
Čestný člen
string.replace na viac riadkoch nefunguje

Registrovaný: 11.08.07
Príspevky: 4088
Témy: 34
Bydlisko: Brno
Príspevok NapísalOffline : 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. .*?.


Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 13.11.07
Prihlásený: 20.08.16
Príspevky: 1702
Témy: 0
Príspevok NapísalOffline : 21.03.2011 20:37

Tá verzia (.|\n)* mi fungovala.


Offline

Užívateľ
Užívateľ
string.replace na viac riadkoch nefunguje

Registrovaný: 05.09.09
Príspevky: 1141
Témy: 127
Bydlisko: Lehota pod ...
Príspevok Napísal autor témyOffline : 21.03.2011 21:19

chrono:
Sranda, fakt to funguje... :shock:

Ď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 "&lt;";
            case ">" :
               return "&gt;";
            case '"' :
               return "&quot;";
            case "&" :
               return "&amp;";
            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... :loony:

// pridané po 42 minútach od posledného príspevku


Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 13.11.07
Prihlásený: 20.08.16
Príspevky: 1702
Témy: 0
Príspevok NapísalOffline : 21.03.2011 21:45

Ten ? sa dáva za * :)


Offline

Užívateľ
Užívateľ
string.replace na viac riadkoch nefunguje

Registrovaný: 05.09.09
Príspevky: 1141
Témy: 127
Bydlisko: Lehota pod ...
Príspevok Napísal autor témyOffline : 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?


Offline

Čestný člen
Čestný člen
string.replace na viac riadkoch nefunguje

Registrovaný: 11.08.07
Príspevky: 4088
Témy: 34
Bydlisko: Brno
Príspevok NapísalOffline : 22.03.2011 13:51

Myslim, ze potrebujes skor toto:
Kód:
/<code>[\s\S]*?<\/code>/g


Offline

Užívateľ
Užívateľ
string.replace na viac riadkoch nefunguje

Registrovaný: 05.09.09
Príspevky: 1141
Témy: 127
Bydlisko: Lehota pod ...
Príspevok Napísal autor témyOffline : 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 "&lt;";
              case ">" :
                 return "&gt;";
              case '"' :
                 return "&quot;";
              case "&" :
                 return "&amp;";
              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>


Odpovedať na tému [ Príspevkov: 12 ] 


Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy. Asus S400CA - rapídne vybitie, viac nefunguje

v Notebooky a netbooky

1

252

17.03.2017 22:48

void Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. MySQL - úbytky/prírastky v riadkoch (po týždni)

v Databázy

6

642

11.05.2010 7:44

coldak Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Replace text

v JavaScript, VBScript, Ajax

5

480

28.05.2012 13:49

xxx9955 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Replace Textu

v PHP, ASP

12

602

05.08.2009 9:52

p360t Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Regex replace

v Ostatné

5

382

02.07.2021 14:53

MTK Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. PHP replace help

v PHP, ASP

4

667

13.04.2008 19:31

Ded'leg Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Replace Text on web

v JavaScript, VBScript, Ajax

2

480

28.03.2009 12:43

Frees Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. F1 Challenge (Viac verzii/viac problemov)

v Počítačové hry

3

1016

19.08.2009 21:03

f4r0 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. String

v PHP, ASP

2

615

19.04.2010 21:20

Antuanet Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. std::string

v Assembler, C, C++, Pascal, Java

2

689

01.01.2010 0:20

koso Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Java String

v Assembler, C, C++, Pascal, Java

4

1174

31.03.2010 22:00

ado21 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Connection String

v Technológia .NET

3

1635

10.09.2009 12:21

TJ Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. pascal: string 255+

v Assembler, C, C++, Pascal, Java

4

558

03.02.2011 18:08

juho Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Java int = string

v Assembler, C, C++, Pascal, Java

4

505

17.02.2016 20:33

neutroN Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. String od do

v Delphi, Visual Basic

1

626

30.11.2009 18:55

ha2 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Invalid system disk replace the disk and press any key

v Operačné systémy Microsoft

5

832

26.04.2008 6:20

mig07 Zobrazenie posledných príspevkov


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

Skočiť na:  

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra