关于preg_match: http://www.cnblogs.com/helww/p/3466720.html

关于preg_match_all:暂时没有完整的

preg_replace_callback核心例子1:把<a>标签的文本中的<替换为空,文本的其它部分不变

$note = '<a href="http://www.so.com"><>ab<></a><a href="http://www.so.com"><>ab<></a>';
function filter_subject($matches){
return $matches[1].(str_replace(array("<", ">"), array(" ", " "), $matches[2])) . $matches[3];
}
$note = preg_replace_callback('/(<a href.*?>)(.*?)(<\/a>)/', "filter_subject", $note); 输出:"<a href="http://www.so.com"> ab </a><a href="http://www.so.com"> ab </a>"

preg_replace: 能够将匹配的模式处理成目标模式。

任务:把[img]100[/img]处理为<img>100</img>

代码:

<?php
$str = '[img]100[/img]test.png[img]1000[/img]';
$newstr = preg_replace('/\[img\](.*?)\[\/img\]/', '<img>$1</img>', $str);
var_dump($newstr);

输出:

string(37) "<img>100</img>test.png<img>1000</img>"

关于括号的用法,看下最后两个任务:http://www.cnblogs.com/helww/p/3466720.html

代码2:

<?php
$str = '[img]100[/img]test.png[img]1000[/img]';
$newstr = preg_replace('/\[img\](.*?)\[\/img\]/', '<img>\1</img>', $str);
var_dump($newstr);

代码3:

<?php
$str = '[img]100[/img]test.png[img]1000[/img]';
$newstr = preg_replace('/\[img\](.*?)\[\/img\]/', "<img>\\1</img>", $str);
var_dump($newstr);

代码4:

<?php
$str = '[img]100[/img]test.png[img]1000[/img]';
$newstr = preg_replace('/\[img\](.*?)\[\/img\]/e', "parse_image($1)", $str);
var_dump($newstr);
function parse_image($str)
{
return '<img>'.$str.'</img>';
}

代码5:

<?php
$str = '[img]100[/img]test.png[img]1000[/img]';
$newstr = preg_replace('/\[img\](.*?)\[\/img\]/', parse_image('$1'), $str);
var_dump($newstr);
function parse_image($str)
{
return '<img>'.$str.'</img>';
}

代码6:

<?php
$str = '[img]100[/img]test.png[img]1000[/img]';
$newstr = preg_replace('/\[img\](.*?)\[\/img\]/', parse_image("$1"), $str);
var_dump($newstr);
function parse_image($str)
{
return '<img>'.$str.'</img>';
}

实验:转换以下字符串

[img]http://xss.re/a.php[/img]aaa[img]http://xss.re/a.php[/img]

转换规则是:[img]*[/img]两个标签内的链接,如果是在.360.cn域,则信任,否则过滤url

上述的字符串转换后为:[img][/img]aaa[img][/img]

实现代码:

PHP:preg_replace的更多相关文章

  1. ECSHOP如何解决Deprecated: preg_replace()报错 Home / 开源程序 / ECSHOP / ECSHOP如何解决Deprecated: preg_replace()报错

    Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in D:\w ...

  2. 头痛的ASCII和preg_replace()

    说这个之前,大家先看下这条语句: preg_replace("/\<\?\=(\\\$[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\[\]\"\'\$\x7f- ...

  3. ecshop php5.4以上版本错误之preg_replace 替换成 preg_replace_callback

    类似这样的报错: Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instea ...

  4. PHP去除unicode续:json_encode之后,仅仅有文字,数字不见了的解决方法

    接前文.http://blog.csdn.net/yanzi1225627/article/details/44985487 这么处理了一段时间.确实没发现问题.但近期发现了一个bug.比方输入&qu ...

  5. preg_replace引发的phpmyadmin(4.3.0-4.6.2)命令执行漏洞

    编辑器坏了 (:  今天看到这个phpmyadmin的代码执行,https://www.waitalone.cn/phpmyadmin-preg_replace-rce.html 记录一下:preg_ ...

  6. 【ecshop】如何解决DEPRECATED: PREG_REPLACE()报错

    部署的ecshop  在高版本的PHP环境里边  ,访问 单个店铺时候会报错, 访问文件路径: http://www.test.com/supplier.php?suppId=5 类似这样的报错: D ...

  7. ECSHOP完美解决Deprecated: preg_replace()报错的问题

    随着PHP5.5 的普及,ECSHOP系统又爆出了新的错误.PHP发展到PHP5.5版本以后,有了很多细微的变化.而ECSHOP官方更新又太慢,发现这些问题后也不及时升级,导致用户安装使用过程中错误百 ...

  8. preg_replace

    preg_replace — 执行一个正则表达式的搜索和替换 说明: preg_replace ( mixed $pattern , mixed $replacement , mixed $subje ...

  9. preg_replace相关问题

    preg_replace preg_replace 函数执行一个正则表达式的搜索和替换. 语法: preg_replace ( mixed $pattern , mixed $replacement ...

随机推荐

  1. 手动搭建SSI框架

    SSI框架为struts.spring.ibatis,在该框架中,使用ibatis作为数据持久层,其中ibatis使用最新版本mybatis3. 注:本文使用版本:struts-2.3.4.sprin ...

  2. JavaBean的属性变量名前两个字母大小写问题

    Java属性命名规范! 一般情况下.Java的属性变量名都已小写字母开头,如:userName,showMessage等,但也存在着特殊情况,考虑到一些特定的有意思的英文缩略词如(USA,XML等), ...

  3. jsvc 以daemon方式运行tomcat

    原理: 使用jsvc来运行服务,没有了默认8005的shutdown端口: 主进程pid为1,fork 2个进程 运行方式参考:http://commons.apache.org/proper/com ...

  4. HTML下直接调用Less文件

    虽然有很多编译Less的插件可以使用 , 但是在开发的时候 , 每修改一次less代码就编译一次less文件 , 很明显效率就太低了 , 接下来为大家介绍一个直接在html的link标签中引入.les ...

  5. 运用bootstrap框架的时候 引入文件的问题

    还要下个jquery,因为bootstrap的js是用jquery写的如果在同一个目录下<html><head><link href="css/bootstra ...

  6. ViewBag的简单使用

    一,在控制器中写好数据绑定 //通过ID查找出整列的数据            Case.Models.Case theCase = db.Case.Find(id);            View ...

  7. apache 安装mod_rewrite

    如果你的服务器apache还没有安装,那很简单,在编译apache时将mod_rewrite模块编译进去就可以.如果你的apache已经安装好了,现在只想编译出mod_rewrite.so模块,在ap ...

  8. dubbo 的monitor监视器安装问题——————monitor一直处于正在启动状态

    一台服务器安装完zookeeper并启动后,然后在另一服务器安装monitor     dubbo-monitor-simple-2.8.3  解压安装 修改配置文件 dubbo.container= ...

  9. Java 集合 集合与数组之间的转换

    Java 集合 集合与数组之间的转换 @author ixenos 数组转集合 Arrays.asList(T... a) 先给结论:用 Arrays.asList(T... a) 将数组转换成集合 ...

  10. Implementing a builder: Zero and Yield

    原文地址:http://fsharpforfunandprofit.com/posts/computation-expressions-builder-part1/ 前面介绍了bind和continu ...