热搜:NVER node 开发 php

求preg_replace正则匹配改进

2024-08-17 19:45:01
求preg_replace正则匹配改进

<?php
$body='副标题#e#




  “三川玲”是一名广州出版人,真名叫做李玲。取“三川玲”做笔名,是为了纪念家乡风物。毕业于华南师范大学, 在一家杂志做过十年记者、编辑,曾是当时保健图书热的推手之一。和很多职场妈妈一样,六年前当她生下女儿后开始关注育儿问题,并从事童书出版工作。


#p#千万不要随大流#e#


  总之,要以我为主,为我服务的态度,千万不要随大流、千万不要超出自己的经济能力,千万不要抱着早教有魔力的态度,去盲目地选择早教机构。


#p#为了升学,突击学习#e#


  入学前的速成班:为了升学,突击学习



  随着丸子年龄的增长,我很快发现,有一类针对3~6岁孩子的早教班风风火火地存在着。


';

$body=preg_replace('正则', '',$body);
echo $body;


//这是DEDECMS里的内容,现在我要做一个阅读全文的页面,也就是这页文章不分页,要把内容里面的分页标记都去了,要去除的标记主要包括有:
//1、段首的分页标记“副标题#e#”
//2、中间的分页标记“#p#千万不要随大流#e#”
//说明:#e#是标题,#p#是分页,当然删除也包括#e#和#p#字符了。


?>


对此,xuzuning 写了个正则
$body=preg_replace('/(?:^|#p#).*?#e#\s*/s', '',$body);

但是我的需求忽略了一个问题,就是当前段首没有“副标题#e#”分页标题的情况,比如:


<?php
$body='




  “三川玲”是一名广州出版人,真名叫做李玲。取“三川玲”做笔名,是为了纪念家乡风物。毕业于华南师范大学, 在一家杂志做过十年记者、编辑,曾是当时保健图书热的推手之一。和很多职场妈妈一样,六年前当她生下女儿后开始关注育儿问题,并从事童书出版工作。


#p#千万不要随大流#e#


  总之,要以我为主,为我服务的态度,千万不要随大流、千万不要超出自己的经济能力,千万不要抱着早教有魔力的态度,去盲目地选择早教机构。


#p#为了升学,突击学习#e#


  入学前的速成班:为了升学,突击学习



  随着丸子年龄的增长,我很快发现,有一类针对3~6岁孩子的早教班风风火火地存在着。


';

$body=preg_replace('正则', '',$body);
echo $body;


//这是DEDECMS里的内容,现在我要做一个阅读全文的页面,也就是这页文章不分页,要把内容里面的分页标记都去了,要去除的标记主要包括有:
//1、段首的分页标记“副标题#e#”
//2、中间的分页标记“#p#千万不要随大流#e#”
//说明:#e#是标题,#p#是分页,当然删除也包括#e#和#p#字符了。


?>

这样会把第一页的都给过滤了,求改进,当段首没有分页标题标记时,不删除第一页内容。


回复讨论(解决方案)

观察了一下,#p# 和 #e# 总是在一行的

body=preg_replace('/(?:^|#p#).*?#e#\s*/', '',$body);

膜拜!嘿嘿。