php正则表达式 获取开始字符串和结束字符串中的部分内容
2016-03-06 17:51
639 查看
在discuz中,回帖表(forum_post)中的message字段中的内容是以如下形式保存的:
$message = "[i=s] \u672c\u5e16\u6700\u540e\u7531 areyouok \u4e8e 2016-3-5 15:12 \u7f16\u8f91 [\/i]\n\n[attach]41[\/attach][attach]10[\/attach]\u592a\u9633\u5149\uff0c\u91d1\u4eae\u4eae\uff0c\u96c4\u9e21\u9ad8\u9ad8\u5531\r\n";
其中[attach]与[\/attach]中间的部分是附件Id,我需要获取出来然后找到具体附件的内容。
这里就需要使用php正则表达式来获取开始字符串与结束字符串之间的内容,放到一个数组中
一些是测试通过的代码:
<?php
//获取开始字符串后的一段字符
$subject = '"./uploads/meinian/96140234039638604.html"\n"./uploads/meinian/json_30_60393801_20140924.txt"';
$pattern = '#"\./uploads/meinian/(.*?)"#i';
$items = preg_match_all($pattern, $subject, $matches);
var_dump($matches);
echo '<hr/>';
//获取开始字符串和结尾字符串之间的部分
$subject = "[i=s] \u672c\u5e16\u6700\u540e\u7531 areyouok \u4e8e 2016-3-5 15:12 \u7f16\u8f91 [\/i]\n\n[attach]41[\/attach][attach]10[\/attach]\u592a\u9633\u5149\uff0c\u91d1\u4eae\u4eae\uff0c\u96c4\u9e21\u9ad8\u9ad8\u5531\r\n";
$pattern = '#\[attach](.*?)\[\\\/attach]#i';
$items = preg_match_all($pattern, $subject, $matches);
$target = preg_replace($pattern,'',$subject);
echo 'target='.$target.'<hr/>';
var_dump($matches);
echo '<hr/>';
?>
$message = "[i=s] \u672c\u5e16\u6700\u540e\u7531 areyouok \u4e8e 2016-3-5 15:12 \u7f16\u8f91 [\/i]\n\n[attach]41[\/attach][attach]10[\/attach]\u592a\u9633\u5149\uff0c\u91d1\u4eae\u4eae\uff0c\u96c4\u9e21\u9ad8\u9ad8\u5531\r\n";
其中[attach]与[\/attach]中间的部分是附件Id,我需要获取出来然后找到具体附件的内容。
这里就需要使用php正则表达式来获取开始字符串与结束字符串之间的内容,放到一个数组中
一些是测试通过的代码:
<?php
//获取开始字符串后的一段字符
$subject = '"./uploads/meinian/96140234039638604.html"\n"./uploads/meinian/json_30_60393801_20140924.txt"';
$pattern = '#"\./uploads/meinian/(.*?)"#i';
$items = preg_match_all($pattern, $subject, $matches);
var_dump($matches);
echo '<hr/>';
//获取开始字符串和结尾字符串之间的部分
$subject = "[i=s] \u672c\u5e16\u6700\u540e\u7531 areyouok \u4e8e 2016-3-5 15:12 \u7f16\u8f91 [\/i]\n\n[attach]41[\/attach][attach]10[\/attach]\u592a\u9633\u5149\uff0c\u91d1\u4eae\u4eae\uff0c\u96c4\u9e21\u9ad8\u9ad8\u5531\r\n";
$pattern = '#\[attach](.*?)\[\\\/attach]#i';
$items = preg_match_all($pattern, $subject, $matches);
$target = preg_replace($pattern,'',$subject);
echo 'target='.$target.'<hr/>';
var_dump($matches);
echo '<hr/>';
?>
相关文章推荐
- PHP+MYSQL+AJAX - 第四章 认识PHP基本语法
- PHP “Warning: session_start()...” 的解决方法
- 从底层剖析 php-fpm 和 mysql 之间的关系 ,涉及连接池pool
- PHP 的ini配置文件的读写操作函数
- PHP 通过fsockopen函数获取远程网页源码
- PHP 中文汉字转换成拼音函数
- PHP 中文汉字转换成拼音函数
- Windows服务器上使用bat定时执行php
- 解决下载文件过程中内存暴涨之---OutputStream
- 某系统响应时间慢TPS低性能瓶颈调优过程
- php基础复习(3)文件上传于下载
- 安装php时,configure: error: xml2-config not found. Please check your libxml2 installation
- AMH4.2面板PHP升级5.6.9
- PHP Laravel框架文档资料汇总
- 服务器上创建Laravel项目(composer安装)
- NTP多种模式的配置
- 使用ThinkPHP保存时出现SHOW COLUMNS FROM
- Laravel学习-三种方式搭建开发环境
- ViewPager + FragmentPagerAdapter 实现底Tab的预加载问题。
- mac 下 php 安装 中的坑