繁体   English   中英

JavaScript 正则表达式替换 HTML 锚点

[英]JavaScript regular expression to replace HTML anchors

我得到了一个 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 到“特殊”的标签,但没有找到所有其他标签。

您可能想查看 DOMDocument 和相关类。 他们在解析 HTML 方面比自制的正则表达式解决方案要好得多。

您可以使用提供的标记创建 DOM 文档,执行 getElementsByTagName 以获取所有超链接,扫描它们的属性以查找值为 special 的 rel 属性,然后采取适当的操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM