文档章节

php、js、java的正则替换文本方式制作模板内容输出

penngo
 penngo
发布于 2013/01/17 01:20
字数 312
阅读 195
收藏 0

#程序员薪资揭榜#你做程序员几年了?月薪多少?发量还在么?>>>

 

在制作模板内容输出时,很经常会使用<%=%>之类的占位符,用正则的方式很方便替换这个内容, 工作中只接触到java、php、js,三种语言的 简单的实现方式:
java版

import java.util.HashMap;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public  class TestRex {
     public  static  void main(String[] args) {
        Map<String, String> map =  new HashMap<String, String>();
        map.put("name", "penngo");
        map.put("date", "2013-01-17");
        Pattern p = Pattern.compile("<%=(\\w+?)%>");
        String str = "<%=date%>, Hello <%=name%>";
        Matcher m = p.matcher(str);
        StringBuffer sb =  new StringBuffer();
         boolean result = m.find();
         while (result) {
            String key = m.group(1);
            String value = map.get(key);
            m.appendReplacement(sb, value);
            result = m.find();
        }
        m.appendTail(sb);
        System.out.println(sb.toString());
    }
}


php版

<?php
     $data =  array('name'=>'penngo', 'date'=>'2013-01-17');
     function replaceStr( $key$data){
         return  $data[ $key];
    }
     $str = '<%=date%>, Hello <%=name%>';
     $str =  preg_replace("/<%=(\w+?)%>/ise", "replaceStr('\\1', \$data)",  $str);
     echo  $str;
?>


js版

 

<html>
<head>
    <meta charset="UTF-8">
    <script type="text/javascript">
     var date = {'name':'penngo', 'date':'2013-01-17'};
     var str = '<%=date%>, Hello <%=name%>';
    str = str.replace(/<%=(\w+?)%>/g,  function($0, $1){
         var value = date[$1];
         return value;
    });
    document.write(str);
    </script>
</head>
<body>
    
</body>
</html>


运行结果输出:

 

2013-01-17, Hello penngo

 

在php使用strip_tags去掉html标签时,并不能去掉script\style\iframe内部内容

<script>内部内容</script>
<style>内部内容</style>
<iframe>内部内容</iframe>

可以使用正则去掉

$str = preg_replace( "@<script(.*?)</script>@is", "", $str );
$str = preg_replace( "@<iframe(.*?)</iframe>@is", "", $str );
$str = preg_replace( "@<style(.*?)</style>@is", "", $str );
$str = preg_replace( "@<(.*?)>@is", "", $str );

 

© 著作权归作者所有

penngo

penngo

粉丝 84
博文 121
码字总数 71288
作品 3
广州
高级程序员
私信 提问
加载中

评论(0)

Java和PHP的区别&&Java中是如何支持正则表达式操作的&&比较一下Java和JavaSciprt的区别&&String 和StringBu...

● 请你说说Java和PHP的区别? 考察点:Java特性 参考回答: PHP暂时还不支持像Java那样JIT运行时编译热点代码,但是PHP具有opcache机制,能够把脚本对应的opcode缓存在内存,PHP7中还支持配置o...

osc_499wyr2d
2019/05/28
1
0
JavaScript正则表达式(JavaScript:The Definitive Guide笔记)

//1.0 字符类 [...] 方括号内的任意字符 [^...] 不再方括号里面的任意字符 . 除换行符和其他Unicode行终止符之外的任意字符 w 任何ASCII字符组成的单词,等价于[a-zA-Z0-9_] W 任何不适ASCII...

chungwoo.J
2012/09/09
244
0
js课程 3-10 js中字符串函数数组函数和其它语言中对应函数的区别和联系是什么

js课程 3-10 js中字符串函数数组函数和其它语言中对应函数的区别和联系是什么 一、总结 一句话总结:js中是对象点方法的形式,这些方法都是对象的方法,而在php、java中却不是这样。 1、js字...

osc_adpilc97
2018/07/09
8
0
JS和PHP和JAVA的正则表达式的区别(java没有分解符,java中的转义字符是\\)

JS和PHP和JAVA的正则表达式的区别(java没有分解符,java中的转义字符是\) 一、总结 js正则:var patrn=/^[0-9]{1,20}$/; php正则: java正则:String pattern = "(\D)(\d+)(.)"; java没有分...

osc_wtsf7p2s
2018/05/22
2
0
JavaScript(js)笔记

js注释 JavaScript注释与Java注释相同 js五大基本类型:   number(数值型)、string(字符串性)、boolean(布尔型)、undefined类型、null类型number包括:数值类型、包含整型、浮点型、...

osc_lrhq0eax
2019/08/30
18
0

没有更多内容

加载失败,请刷新页面

加载更多

Python--报错RecursionError: maximum recursion depth exceeded in comparison

Python--报错RecursionError: maximum recursion depth exceeded in comparison 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本...

归子莫
27分钟前
21
0
聊聊SpinalTap的BinlogEventListener

序 本文主要研究一下SpinalTap的BinlogEventListener BinlogEventListener SpinalTap/spinaltap-mysql/src/main/java/com/airbnb/spinaltap/mysql/binlog_connector/BinaryLogConnectorSourc......

go4it
44分钟前
29
0
Spring的扩展原理

MainConfigOfExt.class /** * 扩展原理: * 1. BeanPostProcessor:bean后置处理器;bean创建对象初始化前后进行拦截工作 * BeanFactoryPostProcessor:beanFactory的后置处理器 * ...

与你同行7
59分钟前
37
0
C# 基础知识系列- 16 开发工具篇

0. 前言 这是C# 基础知识系列的最后一个内容讲解篇,下一篇是基础知识-实战篇。这一篇主要讲解一下C#程序的结构和主要编程工具。 1. 工具 工欲善其事必先利其器,在实际动手之前我们先来看看...

月影南溪
今天
15
0
阿里双11超级工程:PB级文件分发重器蜻蜓

有图有介绍见: http://tech.it168.com/a2017/1114/3179/000003179630.shtml 蜻蜓开源地址:https://github.com/alibaba/dragonfly 2017天猫双11, 交易峰值32.5万/秒,支付峰值25.6万/秒,数...

whoisliang
今天
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部