php 正规替换的结果怎么位移??

wulinag 2014-08-08 05:37:06

$str='<div _data="111"></div><div _data="222"></div><div _data="333"></div>';

$a=preg_replace('/\_data=[\"|\']([a-zA-Z0-9\_]+)([\s\"\']*)/eis', "data_array('\\1')", $str);
die($a);

function data_array($key){
$code=add_div("$key");
return "$code";
}

function add_div($v){
$value="<div id=\"$v\"></div>";
return "$value";
}


//得到的结果
***********************************************************************************************************
<div <div id="111"></div>></div>
<div <div id="222"></div>></div>
<div <div id="333"></div>></div>
***********************************************************************************************************


想要的结果

***********************************************************************************************************
***********************************************************************************************************
<div><div id="111"></div></div>
<div><div id="222"></div></div>
<div><div id="333"></div></div>
***********************************************************************************************************
***********************************************************************************************************
...全文
90 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
一起混吧 2014-08-08
  • 打赏
  • 举报
回复
$str='<div _data="111" class="aaa"></div><div _data="222" class="bbb"></div><p _data="333" class="ccc"></p>';

$a=preg_replace_callback('/<(\w+)\s+\_data=[\"|\']([a-zA-Z0-9\_]+)([\s\"\']*)\s*class="(.+?)"><\/\1>/is', "data_array", $str);
die($a);
  
function data_array($key){
    $code=add_div($key[4], $key[2]);
    return $code;   
}
  
function add_div($class, $id){   
      $value="<div class=\"$class\"><div id=\"$id\"></div></div>";
      return $value;   
}
wulinag 2014-08-08
  • 打赏
  • 举报
回复
引用 2 楼 jordan102 的回复:
$a=preg_replace('/\s+\_data=[\"|\']([a-zA-Z0-9\_]+)([\s\"\']*)>/eis', "data_array('\\1')", $str);
die($a);
 
function data_array($key){
    $code=add_div($key);
    return $code;   
}
 
function add_div($v){   
      $value="><div id=\"$v\"></div>";
      return $value;   
}
追问一下:如果我的html是这个形式,应该怎么改下 $str='<div _data="111" class="aaa"></div><div _data="222" class="bbb"></div><p _data="333" class="ccc"></p>'; 想要的结果 *********************************************************************************************************** *********************************************************************************************************** <div class="aaa"><div id="111"></div></div> <div class="bbb"><div id="222"></div></div> <div class="ccc"><div id="333"></div></div>
一起混吧 2014-08-08
  • 打赏
  • 举报
回复
$a=preg_replace('/\s+\_data=[\"|\']([a-zA-Z0-9\_]+)([\s\"\']*)>/eis', "data_array('\\1')", $str);
die($a);
 
function data_array($key){
    $code=add_div($key);
    return $code;   
}
 
function add_div($v){   
      $value="><div id=\"$v\"></div>";
      return $value;   
}
xuzuning 2014-08-08
  • 打赏
  • 举报
回复
没有看出两个结果的区别!

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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