再问一个正则问题?

php_wsd 2013-03-13 08:23:07
<script  language="javascript" runat="server">
function getDataId(str)
{
var v="",str2="";
var v1;
v1=str.match(/data_id="\w+"/gi);
if(v1!="")
{
var v2=new Array();
v2=(v1+'').split(',');
var current="";
for(i=0;i<v2.length;i++)
{
current=v2[i].toString();
str2+=current+"<hr>";
}
}
return str2;
}
</script>
<%
str="<div id=""body"" class=""dragZone""><div class=""main""><div class=""wrap""><div class=""dragWrap""><div class=""slide drag"" id=""slide"" data_id=""pic"" data_tit=""幻灯片1""><div class=""box""><ul class=""list"">11111111</ul></div></div></div><div class=""box_01 mt-20 cf""><div class=""ann_wrap dragWrap""><dl class=""ann bd_01 drag"" Data_ID=""pic3"" data_tit=""幻灯片2""><dt>{$notice_title}</dt><dd id=""ad""><ul><li i=""{notice1.i}"">333333</li></ul></dd></dl></div></div></div></div></div>"
response.write getDataId(str)
%>

这是我写的一个正则,用来匹配data_id和它后面的字符串的,这个是正确的。
我现在想实现得到以下结果:
<div class="slide drag" id="slide" data_id="pic" data_tit="幻灯片1"><div class="box"><ul class="list"> 11111111</ul></div></div>

<dl class="ann bd_01 drag" Data_ID="pic3" data_tit="幻灯片2"><dt>{$notice_title}</dt> <dd id="ad"><ul><li i="{notice1.i}">333333</li></ul></dd></dl>
这两个字符串,能否实现?
...全文
131 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
php_wsd 2013-03-14
  • 打赏
  • 举报
回复
谢谢版主提示,我得换个思路了
Go 旅城通票 2013-03-14
  • 打赏
  • 举报
回复
dl的好匹配,主要是div里面又嵌套了div,这个难弄。。。 嵌套的只能写HTMLParser之类的东东来分析html结构
function getDataId(str) {
    var str2 = "";
    var v1 = str.match(/<([a-z]+) [^>]+?data_id[\s\S]+?<\/\1>/gi);
    if (v1) {
        var current = "";
        for (i = 0; i < v1.length; i++) {
            current = v1[i].toString();
            if (current.indexOf('<div') == 0) current += '</div>';//按照你原来的结构不全div,如果有多组嵌套的,上面的正则也无法使用
            str2 += current + "<hr>";
        }
    }
    return str2;
}

28,390

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧