2016-06-13 4 views
1

下記のJavaScript関数は、WordPress用のMCEditor WYSIWYG Editorプラグインの一部です。JavaScript Regex画像検索では、画像タグにCSSクラス名が必要です

それは、この形式の画像のためのポストのテキストエディタを検索します。

<p><img src="http://test.dev/primary.jpg" class="mceItem code_syntax_highlighter" data-sh-attr="%20type%3D%22primary%22%20header%3D%22header-text%22%20footer%3D%22footer-text%22" data-sh-content="code-here" data-mce-resize="false" data-mce-placeholder="1" data-mce-src="http://test.dev/primary.jpg"></p> 

それは、このでそれらを置き換えます。

[code_syntax_highlighter type="primary" header="header-text" footer="footer-text"]code-here[/code_syntax_highlighter] 

問題は、以下の正規表現は、現在の内部で任意の画像と一致していることです<p>タグ。画像はcode_syntax_highlighterのCSSクラスを持っていないのであれば、それは以下のJavaScriptで一致して交換されることはありません、私は一致するCSSクラス名を持っているだけで一致したイメージ= code_syntax_highlighter

にそれを変更する必要が

誰でもこのCSSクラスの存在を要求するRegexの修正を助けることができますか?

function restoreShortcodes2(content) { 
    return content.replace(/(?:<p(?: [^>]+)?>)*(<img [^>]+>)(?:<\/p>)*/g, function(match, image) { 
     var data1 = getAttr(image, 'data-sh-attr'); 
     var con = getAttr(image, 'data-sh-code'); 

     if (data1) { 
      return '<p>[' + short_code_tag + data1 + ']' + con + '[/'+short_code_tag+']</p>'; 
     } 
     return match; 
    }); 
} 

答えて

1

function restoreShortcodes2(content) { 
    return content.replace(/(<img(\s*(?:\w+=".*")* class=".*code_syntax_highlighter.*" (?:\w+=".*")*)\/*>)/g , function(match, image) { 
     var data1 = getAttr(image, 'data-sh-attr'); 
     var con = getAttr(image, 'data-sh-code'); 

     if (data1) { 
      return '<p>[' + short_code_tag + data1 + ']' + con + '[/'+short_code_tag+']</p>'; 
     } 
     return match; 
+1

これは、限り、私は私のイメージタグが '決算前に末尾にスペースがあることを確認してくださいとして動作する必要があります。この1

/(<img(\s*(?:\w+=".*")* class=".*code_syntax_highlighter.*" (?:\w+=".*")*)\/*>)/g 

であなたの正規表現を置き換えます> 'タグはうまくいきます。私が持っているもう一つの問題は、私のソーステキストに1つ以上のイメージがある場合、それは1つのイメージをすべて1つのイメージに置き換えることです。それがなぜ今はうまくいかないのでしょうか?ありがとう – JasonDavis

+0

私はそれを強くするために終了タグを修正しようとしました。 2番目の問題については、コードを詳しく見ています – sachgits

関連する問題