JavaScript 正则表达式替换 HTML 锚点

发布于 2024-11-19 11:19:51 字数 1298 浏览 1 评论 0原文

我得到了一个 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

一直在等你来 2024-11-26 11:19:51

您可能想研究 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文