用php更改非php输出内容...
前几天有个需求,就是将页面输出的内容进行过滤... 进行域名更换...
比如本来将输出的www.youkuaiyun.com/image/上面的图片内容,现在迁移到了cdn上面,域名更改为cdn.youkuaiyun.com/image/
再不更改模版的基础上,直接将输出进行修正...
实现过程
1.将所有输出放到output buffer里面
2.在php脚本结束后对output buffer进行修改过滤,再输出.
so测试如下:
原输出假设是如下:
<html>
<head></head>
<body>
<img src="http://www.youkuaiyun.com/image/1.gif">
</body>
</html>
那么在输出html前,加入到php执行中如下代码即可进行html内容的替换
<?php ob_start(); //截取输出 function change_image_domain(){ $output = ob_get_contents(); //对输出进行更改 ob_clean(); $output = str_replace('http://www.youkuaiyun.com/image/','http://cdn.youkuaiyun.com/image/',$output); echo $output; //更改后的输出 } register_shutdown_function('change_image_domain'); ?>
则输出变成
<html>
<head></head>
<body>
<img src="http://cdn .youkuaiyun.com/image/1.gif">
</body>
</html>
重点在于
1.ob_xxx函数 output buffer控制
2.register_shutdown_function函数 注册一个脚本结束时运行的函数..
注意:
1.register_shutdown_function的这个输出必须是最后一个register的...
2.如果流程中有output buffer控制函数,需要具体情况具体分析,进行使用.