首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >preg_replace或str_replace

preg_replace或str_replace
EN

Stack Overflow用户
提问于 2009-12-29 15:33:31
回答 3查看 6.3K关注 0票数 0

我有一些短信,像这样的:

代码语言:javascript
复制
Paragraphs of text
(SOME KNOWN TEXT)Unknown Text(SOME OTHER KNOWN TEXT)
Some additional paragraphs of text

我想要的是保留未知文本,但是去掉(--一些已知文本)(一些其他已知文本)

我认为preg_replace会给我我想要的东西,但是我需要正则表达式来替换它:

代码语言:javascript
复制
(SOME KNOWN TEXT)Unknown Text(SOME OTHER KNOWN TEXT)

用这个..。

代码语言:javascript
复制
Unknown Text

我看到preg_replace接受3个参数,regex替换文本subject

是否有一种方法可以将未知文本的值传递给替换文本参数OR,这是一种在不删除未知文本的情况下获取左、右段(一些已知文本)(一些其他已知文本)的方法吗?或者,对此是否有str_replace()解决方案?

谢谢

---UPDATE---

(其他一些已知文本)片段可能存在于文本中的其他地方,但我不希望它被删除,除非它遵循(一些已知文本)未知文本(一些其他已知文本)的模式。我认为最初的str_replace建议会因为这一点而无效。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-12-29 15:47:19

条件是什么?如果你有:

(另一些已知文本)未知文本(一些已知文本)

(即,如果交换了括号内的文本),您还想删除它吗?已知文本必须始终位于行首或行尾吗?如果这两种方法的答案都是肯定的,那么最好使用正则表达式。就像这样:

代码语言:javascript
复制
$new_text = preg_replace('/^\(SOME KNOWN TEXT\)(.+)\(SOME OTHER KNOWN TEXT\)$/m, '$1', $text);

反斜杠(\)是用来转义在正则表达式中具有特殊意义的()字符。我假设您想要更改内容--您可以在这一点上删除它们。

在这个正则表达式中,.是一个特殊的运算符,意思是“任意字符”。它将与任何字符匹配。+的意思是“一个或多个”,是前一个操作符上的修饰符,可以解释为匹配“任意字符中的一个或多个字符”。()字符用于捕获子模式中的文本部分。通过将.+包含在括号中,我们捕获了要在替换中使用的内容。由()包围的第一部分由regex引擎标记为$1。如果我们有更多,他们就会被贴上$2$3等标签。

如果这两种方法都不适用,您可以使用其他答案中提到的str_replace函数。

票数 4
EN

Stack Overflow用户

发布于 2009-12-29 15:38:48

您可以简单地为str_replace提供一个要删除的字符串数组,如下所示:

代码语言:javascript
复制
$destString = str_replace(array('TEXT A', 'TEXT B'), '', $sourceString);

如果您不需要任何聪明的模式匹配,这将是一个比regex更快的解决方案。

票数 3
EN

Stack Overflow用户

发布于 2009-12-29 15:38:19

如果这两篇文章确实为人所知,你可以这样做:

代码语言:javascript
复制
$result = str_replace(array('(SOME KNOWN TEXT)', '(SOME OTHER KNOWN TEXT)'), '', '(SOME KNOWN TEXT)Unknown Text(SOME OTHER KNOWN TEXT)');

这比正则表达式更好的性能。第一个参数是要替换的一组键,第二个参数是用什么替换它,第三个参数是主题。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1975215

复制
相关文章

相似问题

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