Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tinymce编辑器库插件Regexp问题?_Regex_Wordpress_Tinymce_Gallery - Fatal编程技术网

Tinymce编辑器库插件Regexp问题?

Tinymce编辑器库插件Regexp问题?,regex,wordpress,tinymce,gallery,Regex,Wordpress,Tinymce,Gallery,我正在使用tinymce编辑器将内容插入mysql。 我已经根据我的系统更改了wordpress gallery editor插件 如果内容中有库代码。我将此代码转换为符号照片,以便用户理解有一个图库,而不是看到代码。就像wordpress一样 如果内容中只有一个库,我会成功地将此代码转换为图像,但如果有多个库,则会失败 如何在保存到db之前将所有{gallery}代码转换为符号图像,并在插入或更新到mysql时将这些照片再次转换回{gallery}代码 我对正则表达式很差。 我认为do_gal

我正在使用tinymce编辑器将内容插入mysql。 我已经根据我的系统更改了wordpress gallery editor插件

如果内容中有库代码。我将此代码转换为符号照片,以便用户理解有一个图库,而不是看到代码。就像wordpress一样

如果内容中只有一个库,我会成功地将此代码转换为图像,但如果有多个库,则会失败

如何在保存到db之前将所有{gallery}代码转换为符号图像,并在插入或更新到mysql时将这些照片再次转换回{gallery}代码

我对正则表达式很差。 我认为do_gallery RegExp有错误。我应该如何改变这个

初始化编辑器,如:

ed.onBeforeSetContent.add(function(ed, o) {
            ed.dom.loadCSS(url + "/css/gallery.css");
            o.content = t._do_gallery(o.content);
        });

        ed.onPostProcess.add(function(ed, o) {
            if (o.get)
                o.content = t._get_gallery(o.content);
        });
我的“做并得到画廊”代码如下:

_do_gallery : function(co) {
        return co.replace(/\{gallery([^\]]*)\}/g, function(a,b){
            var image = '<img src="gallery.gif" class="wpGallery mceItem" title="gallery'+tinymce.DOM.encode(b)+'" />';
            console.log(image);
            return image;

        });
    },

    _get_gallery : function(co) {

        function getAttr(s, n) {
            n = new RegExp(n + '="([^"]+)"', 'g').exec(s);
            return n ? tinymce.DOM.decode(n[1]) : '';
        };

        return co.replace(/(?:<p{^>}*>)*(<img[^>]+>)(?:<\/p>)*/g, function(a,im) {
            var cls = getAttr(im, 'class');

            if ( cls.indexOf('wpGallery') != -1 )
                return '<p>{'+tinymce.trim(getAttr(im, 'title'))+'}</p>';

            return a;
        });
    }
\u do\u画廊:功能(co){
return co.replace(/\{gallery([^\]]*)\}/g,函数(a,b){
var图像=“”;
console.log(图像);
返回图像;
});
},
_获取图库:功能(co){
函数getAttr(s,n){
n=newregexp(n+'=“([^”]+)”,“g')。exec(s);
返回n?tinymce.DOM.decode(n[1]):“”;
};
返回co.replace(/(?:}*>)*(
但是,如果内容是:

<p>Blah</p>
<p>{gallery Name="gallery1" id="82" galeryID="15"  sizeId="6" galery_type="list"}</p>
<p>test</p>
废话

{gallery Name=“gallery1”id=“82”galeryID=“15”sizeId=“6”galery\u type=“list”}

试验

{gallery Name=“gallery2”id=“88”galeryID=“11”sizeId=“1”galery\u type=“slide”}

测试2

它记录

<img src="gallery.gif" class="wpGallery mceItem" title="gallery Name=&quot;tekne1&quot; id=&quot;82&quot; galeryID=&quot;15&quot; sizeId=&quot;6&quot; galery_type=&quot;liste&quot;" />

我希望我能解释我的问题
谢谢。

我怀疑您原来的正则表达式是一个输入错误,当您点击按钮时,它看起来像是缺少了一个移位。请尝试以下操作:

<p>Blah</p>
<p>{gallery Name="gallery1" id="82" galeryID="15"  sizeId="6" galery_type="list"}</p>
<p>test</p>
<p>{gallery Name="gallery2" id="88" galeryID="11"  sizeId="1" galery_type="slide"}</p>
<p>test2</p>

然后
([^\}]*)
部分将(贪婪地)吃掉任何不是
}
的字符序列;您原来的部分将消耗任何不包含
]
的字符序列,结果是您将抓取第一个
{
和最后一个
}之间的所有内容
而不仅仅是抓住大括号之间的文本。

我怀疑您原来的正则表达式是一个输入错误,当您点击时,看起来像是缺少了一个移位。请尝试以下操作:

<p>Blah</p>
<p>{gallery Name="gallery1" id="82" galeryID="15"  sizeId="6" galery_type="list"}</p>
<p>test</p>
<p>{gallery Name="gallery2" id="88" galeryID="11"  sizeId="1" galery_type="slide"}</p>
<p>test2</p>

然后
([^\}]*)
部分将(贪婪地)吃掉任何不是
}
的字符序列;您原来的部分将消耗任何不包含
]
的字符序列,结果是您将抓取第一个
{
和最后一个
}之间的所有内容
而不仅仅是在两对大括号之间抓取文本。

如果你知道的没错,这很容易:)非常感谢。如果你不介意的话,还有一件事,它总是会再添加一个标签。例如,它会变成{gallery Name=“gallery1”id=“82”galeryID=“15”sizeId=“6”galery\u type=“list”}

.你有什么想法吗?再次感谢你。@orhan:我认为你的非捕获组,
(?:}*>)
的组合,然后添加
标记,{'+…
会导致你的加倍,试试
'{+tinymce.trim(getAttr(im,'title'))+}“在
\u get\u gallery`。当你几个小时没有盯着某个东西看的时候,你会更容易看到打字错误:)如果你知道的没错,这很容易:)谢谢你。如果你不介意的话,还有一件事,它总是会再添加一个标签。例如,它变成了{gallery Name=“gallery1”id=“82”galeryID=“15”sizeId=“6”galery\u type=“list”}

.你有什么想法吗?再次感谢你。@orhan:我认为你的非捕获组,
(?:}*>)
的组合,然后添加
标记,{'+…
会导致你的加倍,试试
'{+tinymce.trim(getAttr(im,'title'))+}“在
\u get\u gallery`。当你几个小时没有盯着某个东西看的时候,更容易看到打字错误:)为什么不包括WP gallery插件的editor\u plugin.js?为什么不包括WP gallery插件的editor\u plugin.js?
/\{gallery([^\}]*)\}/g