在PHP中的preg_replace函数

3

我想要替换包含在{content}中的字符串内容。它可以是多行等等。preg_replace函数应该删除整个 { com no mat ment }

4个回答

2

试试这个:

$result = preg_replace('/\{[^}]*\}/s', 'replacement content', $subject);

你的和上面那个有什么不同?两个都在工作。 - Speedy Wap
作者似乎也想要替换 {},所以这对我来说看起来很好。但是圆括号是不必要的。+1 - Highly Irregular
同意使用圆括号,已修复! - Mārtiņš Briedis
1
@Highly Irregular 我也是这么想的,但事实证明他们并没有(请参见我的回答中的评论)。 - alex

1

更新

$str = preg_replace('/(?<=\{).+?(?=\})/s', '', $str);

查看


你的代码和下面的代码有什么区别?两者都能正常工作。 - Speedy Wap
@user381595 这些答案没有浮动排序,所以请链接到相关的那个。我猜你说的是哪一个,它们非常相似,除了我的使用非贪婪匹配而不是明确查找结束字符,而且我的必须在“{”和“}”之间至少有一个字符。我的也没有不必要的捕获组,除非你想重用捕获的文本 :) - alex
对不起,但是这本应该删除 {注释} 但我刚意识到它会删除 {} 中的所有内容。很抱歉给您带来不便,请问能否修改它只删除 {星号注释星号} 的部分? - Speedy Wap
@user381595 确定,看更新。我认为这就是你想要的 - 它不会消耗星号,所以{something}将被替换为{} - alex
@user381595 为什么您取消了这个答案的采纳...是因为它不再符合您的需求了吗? - alex

1

preg_match_all('/{*([^}]+*)}/s'), $content, $matches)

preg_match_all('/{*([^}]+*)}/s'), $content, $matches)


0

这个怎么样?

preg_match_all('/\{([^}]+\)}/s'), $content, $matches)

你需要使用 s 修饰符来使表达式能够处理换行符。 $matches 数组将包含所有匹配的片段,然后你可以进行替换。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接