求preg_replace正则匹配改进
程序员文章站
2022-04-24 08:14:29
...
$body='副标题#e#
#p#千万不要随大流#e#
#p#为了升学,突击学习#e#
';
$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#”分页标题的情况,比如:
$body='
#p#千万不要随大流#e#
#p#为了升学,突击学习#e#
';
$body=preg_replace('正则', '',$body);
echo $body;
//这是DEDECMS里的内容,现在我要做一个阅读全文的页面,也就是这页文章不分页,要把内容里面的分页标记都去了,要去除的标记主要包括有:
//1、段首的分页标记“副标题#e#”
//2、中间的分页标记“#p#千万不要随大流#e#”
//说明:#e#是标题,#p#是分页,当然删除也包括#e#和#p#字符了。
?>
这样会把第一页的都给过滤了,求改进,当段首没有分页标题标记时,不删除第一页内容。
“三川玲”是一名广州出版人,真名叫做李玲。取“三川玲”做笔名,是为了纪念家乡风物。毕业于华南师范大学, 在一家杂志做过十年记者、编辑,曾是当时保健图书热的推手之一。和很多职场妈妈一样,六年前当她生下女儿后开始关注育儿问题,并从事童书出版工作。
#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#”分页标题的情况,比如:
$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);
膜拜!嘿嘿。