我有一个HTML字符串,我希望将一些特殊的标签转换为其他标签。我需要这个用于TinyMCE插件。我试图改变Wordpress wpgallery插件。
例如:这些是HTML字符串
<a href="http://www.yahoo.com">Yahoo</a>
<a href="http://www.google.com">Google</a>
<a href="#" rel='special' title='link cat_id="4" content_id="5" content_slug="Slug 1"'>Some where else</a>
在这里,我必须找到特殊的链接一,并从它的标题值转换为其他东西 像:
{link cat_id="4" content_id="5" content_slug="Slug 1"}
我需要像这样的返回值将其插入MySQL
<a href="http://www.yahoo.com">Yahoo</a>
<a href="http://www.google.com">Google</a>
{link cat_id="4" content_id="5" content_slug="Slug 1"}
我试过这个
function getAttr(s, n) {
n = new RegExp(n + '="([^"]+)"', 'g').exec(s);
return n ? tinymce.DOM.decode(n[1]) : '';
};
return co.replace(/[^<]*(<a href="([^"]+)">([^<]+)<\/a>)/g, function(a,im) {
var cls = getAttr(im, 'rel');
if ( cls.indexOf('special') != -1 )
return '{'+tinymce.trim(getAttr(im, 'title'))+'}';
return a;
});
这个
/[^<]*(<a href="([^"]+)">([^<]+)<\/a>)/g
找不到rel
eq为'special'的标签,而是所有其他标签。
答案 0 :(得分:2)
您可能希望查看DOMDocument和相关类。它们在解析HTML方面比自制的正则表达式解决方案要好得多。
您可以使用提供的标记创建DOM文档,执行getElementsByTagName以获取所有超链接,使用特殊值扫描其属性以获取rel属性,然后执行相应的操作。