首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用PHP中的regex查找和替换两个标记之间的字符串?

如何使用PHP中的regex查找和替换两个标记之间的字符串?
EN

Stack Overflow用户
提问于 2016-08-25 14:57:04
回答 2查看 1.1K关注 0票数 0

如果我们有这样的短信:

SYS 1页1从2:/SYS Lorem Ipsum只是印刷和排版行业的虚拟文本。Lorem Ipsum一直是业界的标准..。 SYS 2页2从2:/SYS 它不仅活了五个世纪,而且跨越了电子排版,基本保持不变。

我应该如何在SYS和/SYS标记之间只保留文本?就像这样:

第2页第1页: Lorem Ipsum只是印刷和排版行业的虚拟文本。Lorem Ipsum一直是业界的标准..。 第2页: 它不仅活了五个世纪,而且跨越了电子排版,基本保持不变。

我认为下面的regex会在两个没有属性的标记中找到文本:

代码语言:javascript
运行
复制
/\[SYS\](.+?)\[\/SYS\]/

但是,如何用标记的内部文本(或任何其他字符串)替换整个元素呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-08-25 15:10:09

使用以下表达式:

代码语言:javascript
运行
复制
\[SYS[^]]*\](.+?)\[/SYS\]

并将其替换为$1,参见a demo on regex101.com

PHP

代码语言:javascript
运行
复制
$regex = '~\[SYS[^]]*\](.+?)\[/SYS\]~';
$string = preg_replace($regex, '$1', $your_original_string);

有关ideone.com上的完整代码,请参见演示。

票数 2
EN

Stack Overflow用户

发布于 2016-08-25 15:01:44

您可以这样替换:

代码语言:javascript
运行
复制
$re = "/\\[\\/?SYS(?:\\s\\d+)?\\]/";
$str = "[SYS 1]Page 1 from 2:[/SYS]";
echo preg_replace($re, "", $str)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39148592

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档