请教用 正则表达式 替换字符串的问题

aiur 2005-09-30 08:50:38
我有 12<br/>34<br/><br/><br/>56 这样的字符串
我想把只连续出现一次的<br/>替换成其他值,后面的连续出现三次的<br/>不变
请问怎么做啊,我知道用元字符?,可是具体怎么写,就不会啦
请各位指教!
...全文
137 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
aiur 2005-09-30
  • 打赏
  • 举报
回复
抱歉,是我没有说清楚

我当时是想举例说连续出现三次<br/>不变(连续出现两次以上<br/>我也都希望不变)

一个字符串,其中连续出现<br/>的次数会不固定,我想替换只出现一次<br/>的,而出现多次的<br/>不处理。

这是我碰到的一个实际应用:一篇文章,我在存到数据库前做了处理,将换行替换为了<br/>,段落之间有用一个<br/>分隔的,也有用多个<br/>分隔的, 由于一个<br/>分隔的,感觉排版效果不好,要再增加一个<br/>,达到段落之间,最少会有一个空行,这样看起来效果会好一些,当然已经有了空行的,我就不想再增加空行了。

xuzuning 2005-09-30
  • 打赏
  • 举报
回复
“后面的连续出现三次的<br/>不变”这是你最初的要求!


"#(?:<br />){3}#",
===》
"#(?:<br />){3,}#",
aiur 2005-09-30
  • 打赏
  • 举报
回复
还有点问题~
在字符串里,<br/>出现的次数可能会不固定,可能是...<br/><br/>...,也可能是...<br/><br/><br/><br/>....,也可能是...<br/><br/><br/><br/><br/><br/>...
我希望在只替换出现一次<br/>的,而出现多次的<br/>不处理,应该怎么改呢?
谢谢!
xuzuning 2005-09-30
  • 打赏
  • 举报
回复
$p = array(
"#(?:<br />){3}#",
"#<br />#",
"#_STACK_#",
);
$r = array(
"_STACK_",
"哈哈",
"<br /><br /><br />",
);
echo preg_replace($p, $r, "12<br />34<br /><br /><br />56");

21,891

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧