2013-07-02 2 views
1

내 WordPress에 간단한 래퍼 단축 번호을 만들었습니다.REGEX - 내부 내용에 줄 바꿈이있는 경우 단락을 지우는 HTML

그리고 시각적으로보기

이이 코드와 함께 좋은 작품에

HTML<div class="wrap">my cool content</div>

단축 코드 텍스트보기에[wrap vars="whatever"]my cool content[/wrap]에서 앞뒤로 전환 할 ed.onBeforeSetContented.onPostProcess을 사용하고 있습니다. 개폐 단축 코드 사이의 콘텐츠 내에서 return 또는 new line가있는 경우

_get_wrap : function(co) { 
    return co.content.replace(/\<div(.*?)?\>(?:(.+?)?\<\/div\>)?/g, function(a,b,c) {    
     var arr = b.replace(/['"]/g,'').split(' '); 
     var params = new Object(); 
     for (var i=0;i<arr.length;i++){ 
      var p = arr[i].split('='); 
      params[p[0]] = p[1]; 
     } 
     if (params['class'] == "wrap") 
      return '[wrap'+b+']'+c+'[/wrap]'; 
     return a; 
    }); 
} 

불행하게도, 그것은 줄 바꿈이있을 때 나는 위의 코드를 그대로 c 컨텐츠를 유지할 수있는 방법

실패 ?

+1

이것은 아마도 동료가 읽을 쉽게 그래서 질문을 다시 포맷 고려에 걸릴 정말 매우 어려운 줄 바꿈을 일치 시키려면, 다음 사용해야합니다. – simonmorley

+0

나는 @imimmorley와 동의한다. 나는 아래의 질문에 올바르게 대답했다고 믿지만이 문제를 아주 간단한 예제로 끓여서 더 잘 표현했을 것이다. –

답변

2

. 와일드 카드가 개행과 일치하지 않습니다. [^] :.

_get_wrap : function(co) { 
    return co.content.replace(/\<div([^]*?)?\>(?:([^]+?)?\<\/div\>)?/g, function(a,b,c) {    
     var arr = b.replace(/['"]/g,'').split(' '); 
     var params = new Object(); 
     for (var i=0;i<arr.length;i++){ 
      var p = arr[i].split('='); 
      params[p[0]] = p[1]; 
     } 
     if (params['class'] == "wrap") 
      return '[wrap'+b+']'+c+'[/wrap]'; 
     return a; 
    }); 
} 
+0

그게 다야! 너 대 남자. –