JavaScript 正则表达式替换 HTML 锚点
我得到了一个 HTML 字符串,我想将一些特殊的 a 标签转换为其他内容。我需要这个作为 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”的标签,但找到所有其他标签。
I got a HTML string and from this I want to convert some special a tags to something else. I need this for a TinyMCE plugin. I tried to change Wordpress wpgallery plugin.
For example: These are in HTML string
<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>
Here I have to find special link one and convert it to something else from it's title value
like:
{link cat_id="4" content_id="5" content_slug="Slug 1"}
i need return value like this to insert it into 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"}
I tried this
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;
});
this
/[^<]*(<a href="([^"]+)">([^<]+)<\/a>)/g
does not find tags with rel
eq to 'special' but all the others.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可能想研究 DOMDocument 和相关类。它们在解析 HTML 方面比自制的正则表达式解决方案要好得多。
您可以使用提供的标记创建 DOM 文档,执行 getElementsByTagName 以获取所有超链接,扫描其属性以查找具有特殊值的 rel 属性,然后采取适当的操作。
You might want to look into the DOMDocument and related classes. They are much better at parsing HTML than a homebrewed regex solution would be.
You can create a DOMdocument using your supplied markup, execute getElementsByTagName to get all the hyperlinks, scan their attributes for a rel attribute with the value of special, and then take the appropriate action.