求php 用正则表达式修改body的onload里的函数

110来电 是吗 2009-08-25 12:01:34
比如一个页面的源代码里有<body onload="abc();">....</body>
我想在abc();前插入一个init(); 请问如何做到.
原始的字符串里可能没有onload="",body 和 onload里也可能有其它字符串.
总之要考虑很多其它因素,万无一失.
多谢了
...全文
46 点赞 收藏 5
写回复
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
linyunxue 2009-08-27
好的谢谢!!!!!!!!!!!!11
回复
blueforyou 2009-08-27

<?php
$str='<body onload="abc();">.... ';
$str = preg_replace('/(<body[^>]+)onload=[\"\']([^>]+)[\"\']/i', '$1onload="init();$2"', $str);
echo $str;
?>
回复
110来电 2009-08-25
不是啊,是把html的代码替换
回复
cgisir 2009-08-25
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script>
function abc(){ // 原来abc方法
alert('abc');
}

function init(){
alert('init');
}

var tmp = abc;
abc = function(){ // 重置 abc方法
init();
tmp();
};

</script>
</head>

<body onload='abc()'>
</body>
</html>
回复
cgisir 2009-08-25
<?php
$str='<body onload="abc();">.... ';
$reg = '/(<body.+?)onload="(.+?>)/i';
$str = preg_replace($reg, '$1onload="init();$2', $str);
echo $str;
?>
回复
发动态
发帖子
基础编程
创建于2007-09-28

2.1w+

社区成员

从PHP安装配置,PHP入门,PHP基础到PHP应用
申请成为版主
社区公告
暂无公告