文档章节

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

penngo
 penngo
发布于 2013/01/17 01:20
字数 312
阅读 145
收藏 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
粉丝 76
博文 98
码字总数 55112
作品 2
广州
程序员
JavaScript正则表达式(JavaScript:The Definitive Guide笔记)

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

chungwoo.J
2012/09/09
0
0
检查单 2015-02-01-01

上文: http://my.oschina.net/typhoon/blog/368121 下文: http://my.oschina.net/typhoon/blog/415294 分类: 技能相关项: 基础项: TFW-BASE 、TFW-WEB-BASE 、TFW-WEB-LPM 相关项: [完......

自由狼-台风
2015/02/01
0
1
三分钟读懂Java与JavaScript的区别,让小白摘帽

Java跟JavaScript虽然在名称上有些许相似,但其实是两种完全不同的语言。Java是一种程序设计语言,JavaScript是客户端的脚本语言,把这两样东西放在一起比较在科学上其实并不严谨。但它们唯一...

小欣妹妹
2017/10/21
0
0
25行代码实现一个简单的编译器

起因 《25行JavaScript语句实现一个简单的编译器》实现的是一个简单到不能再简单的玩具的玩具,他的魔法是函数式编程简化了js代码。java 8提供了函数式编程的支持,昨晚脑子抽风突然兴趣jav...

obaniu
2017/11/06
0
0
JavaWeb01-HTML篇笔记(七)

.1 案例三:完成对注册页面的数据的简单校验.1.1.1 需求: 对注册页面的数据进行非空的简单校验!!!如果有某个值没有输入,点击提交,弹出一个对话框进行提示!! 1.1.2 分析:1.1.2.1 技术分...

我是小谷粒
04/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

(三)Nginx配置·续

概述 前文写了关于Nginx环境配置,但是还没有完,接下来将会继续讲三个相关的配置 主要是以下三个 1.Nginx访问日志 2.Nginx日志切割 3.静态文件不记录日志和过期时间 Nginx访问日志 1.先看看...

杉下
今天
1
0
jquery创建类似于java的map

var map = {}; // Map map = new HashMap(); map[key] = value; // map.put(key, value); var value = map[key]; // Object value = map.get(key); var has = key in map; // boolean has = ......

SuperDabai
今天
0
0
java大数据转换16进制转10进制

public static void main(String[] args) {String hex = "0xdbf3accc683297cf0000";BigInteger amount = new BigInteger(hex.substring(2), 16);System.out.println(amount);......

任梁荣
昨天
2
0
OSChina 周六乱弹 —— 目测我们程序员丁克的几率不大

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @真Skr小机灵鬼儿:8.13分享Jocelyn Pook/Russian Red的单曲《Loving Strangers》 《Loving Strangers》- Jocelyn Pook/Russian Red 手机党少...

小小编辑
昨天
15
4
TypeScript基础入门 - 函数 - 剩余参数

转载 TypeScript基础入门 - 函数 - 剩余参数 项目实践仓库 https://github.com/durban89/typescript_demo.gittag: 1.2.1 为了保证后面的学习演示需要安装下ts-node,这样后面的每个操作都能...

durban
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部