Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Wyrażenie regularne - dwie funkcje, te same wyrażenie, jeden błąd.
adbacz
post 3.04.2012, 15:30:01
Post #1





Grupa: Zarejestrowani
Postów: 532
Pomógł: 24
Dołączył: 15.04.2011
Skąd: Kalisz

Ostrzeżenie: (0%)
-----


Nie wiem jak opisac błąd, więc pokażę funkcję i powiem co sie dzieje. Używam sobie tinyMCE, i podczas inicjacji wywoływana jest taka funkcja:
Kod
function asdf(inst) {
    
    var begin = 'src="';
    var RegExpAllImages = new RegExp('<img[^>]+>', 'g');
    var mached = inst.match(RegExpAllImages);
    var RegExpImgSrc = new RegExp('src="[^"]+"', 'i');  
    var RegExpHttphost = new RegExp('^src="http', 'i');
    var RegExpFirstSlash = new RegExp('^/', 'i');
    //var RegExpReplaceContent = new RegExp('');

    for(var i=0; i<mached.length; i++) {  
      var src = mached[i].match(RegExpImgSrc);
      
      if(RegExpHttphost.test(src) == false) {  
        var srcOrg = src.toString();
        src = srcOrg.substr(14);
        if(RegExpFirstSlash.test(src)) {
          src = begin + '/' + src;
          var toReplace = mached[i].replace(RegExpImgSrc, src);
          inst = inst.replace(new RegExp(mached[i]), toReplace);
        }
      }
    }
    
    return inst;
  }



I podczas gdy użytkownik zmieni treść w tym edytorze wywoływana jest taka
Kod
function myCustomOnChangeHandler(inst) {
    var begin = 'data-mce-src="';
    var content = inst.getBody().innerHTML;
    var RegExpAllImages = new RegExp('<img[^>]+>', 'gi');
    var mached = content.match(RegExpAllImages);
    var RegExpImgSrc = new RegExp('data-mce-src="[^"]+"', 'i');
    var RegExpHttphost = new RegExp('^data-mce-src="http', 'i');
    var RegExpFirstSlash = new RegExp('^/', 'i');

    for(var i=0; i<mached.length; i++) {  
      var src = mached[i].match(RegExpImgSrc);
    
      if(RegExpHttphost.test(src) == false) {  
        var srcOrg = src.toString();
        src = srcOrg.substr(14);
        if(RegExpFirstSlash.test(src)) {
          src = begin + src.substr(1);
          var toReplace = mached[i].replace(RegExpImgSrc, src);
          content = content.replace(new RegExp(mached[i]), toReplace);
          inst.getBody().innerHTML = content;
        }
      }
    }
  }


Obie funkcje mają takie same wyrażenia, ale ta pierwsza wyrzuca błąd w miejscu, gdzie jest pętla a druga działa dobrze. Siedzę na tym od paru godzin i nie mam pomysłu czego to może być wina. Bardzo prosze o pomoc.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 29.06.2025 - 03:07