PHP:preg_replace
关于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的更多相关文章
- 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 ...
- 头痛的ASCII和preg_replace()
说这个之前,大家先看下这条语句: preg_replace("/\<\?\=(\\\$[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\[\]\"\'\$\x7f- ...
- ecshop php5.4以上版本错误之preg_replace 替换成 preg_replace_callback
类似这样的报错: Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instea ...
- PHP去除unicode续:json_encode之后,仅仅有文字,数字不见了的解决方法
接前文.http://blog.csdn.net/yanzi1225627/article/details/44985487 这么处理了一段时间.确实没发现问题.但近期发现了一个bug.比方输入&qu ...
- preg_replace引发的phpmyadmin(4.3.0-4.6.2)命令执行漏洞
编辑器坏了 (: 今天看到这个phpmyadmin的代码执行,https://www.waitalone.cn/phpmyadmin-preg_replace-rce.html 记录一下:preg_ ...
- 【ecshop】如何解决DEPRECATED: PREG_REPLACE()报错
部署的ecshop 在高版本的PHP环境里边 ,访问 单个店铺时候会报错, 访问文件路径: http://www.test.com/supplier.php?suppId=5 类似这样的报错: D ...
- ECSHOP完美解决Deprecated: preg_replace()报错的问题
随着PHP5.5 的普及,ECSHOP系统又爆出了新的错误.PHP发展到PHP5.5版本以后,有了很多细微的变化.而ECSHOP官方更新又太慢,发现这些问题后也不及时升级,导致用户安装使用过程中错误百 ...
- preg_replace
preg_replace — 执行一个正则表达式的搜索和替换 说明: preg_replace ( mixed $pattern , mixed $replacement , mixed $subje ...
- preg_replace相关问题
preg_replace preg_replace 函数执行一个正则表达式的搜索和替换. 语法: preg_replace ( mixed $pattern , mixed $replacement ...
随机推荐
- APK安装时的过滤方式:包名白名单、证书认证
1.定义一些全局变量,文件位置: Build.java (frameworks\base\core\java\android\os) /** * 包管理方式名称<br> * whiteli ...
- MVC学习笔记--IEnumerable的用法
IEnumerable的用法 IEnumerable和IEnumerable<T>接口在.NET中是非常重要的接口,它允许开发人员定义foreach语句功能的实现 并支持非泛型方法的简单的 ...
- 发布webService
创建webservices项目 1>创建web项目>添加新建项>webService>确认 注:webservices项目相当于就是UI ******************* ...
- Jira 6.0.3安装破解汉化
前段时间和上海的朋友交流了下,他们公司使用JIRA管理项目.回来整理了下感觉很不错. http://www.unlimax.com/jira.html工作中总是有各种事务要去处理,而这些事务不仅仅是代 ...
- html中的a标签的target属性的四个值的区别?
target属性规定了在何处打开超链接的文档. 如果在一个 <a> 标签内包含一个 target 属性,浏览器将会载入和显示用这个标签的 href 属性命名的.名称与这个目标吻合的框架或者 ...
- mysql 批量修改表前缀
直接贴码: SELECT a.*, concat( 'alter table ', a.TABLE_NAME, ' rename ge_', SUBSTR( a.TABLE_NAME FROM INS ...
- POJ 1042 Gone Fishing#贪心
(- ̄▽ ̄)-* #include<iostream> #include<cstdio> #include<cstring> using namespace std ...
- Map获取键值,Map的几种遍历方法
Map 类提供了一个称为entrySet()的方法,这个方法返回一个Map.Entry实例化后的对象集.接着,Map.Entry类提供了一个 getKey()方法和一个getValue()方法,Map ...
- C语言中字符串
#include <stdio.h> int main(){ char s[] = "ABCD"; char *p; for(p=s; p<s+4; p++) { ...
- 测试word 2013发布blog
测试图片和各种格式 使用Windows Live Writer 2012和Office Word 2013 发布文章到博客园全面总结 (亲测可用) 我的一些感受: 缺点 (1) Word201 ...