2010-10-26 70 views
0

如果我有一个字符串,它看起来像my name is {your name here} and I am from {country}. 我想使用的preg_replace删除{content}因此字符串结束为my name is and I am from .PHP预浸更换::正则表达式

但我不能工作了正则表达式模式。

有人可以帮我吗?


my name is and I am from .只是一个示例字符串。

它可以像the current date is {current date} in {suburb}

+0

我很好奇..什么是这一点?字符串“”我的名字是什么,我来自哪里?“”有什么价值? – drudge 2010-10-26 23:01:17

+0

由于{content}实际上是模板中的关键字,所以它们会在用户输入文本框时填充。但是当他们还没有输入任何内容时,我不想让{content}显示;) – Hailwood 2010-10-26 23:04:31

回答

4

也许是这样的:

/\{[^{}]*}/ 

未经检验的,但应该让你开始。首先匹配{,然后除}以外的所有内容,然后匹配}。

编辑:固定它,现在它的实际测试;)

+1

+1,但是a)你可以删除字符类中的反斜杠(并且在通常的大括号之前),b)你不需要括号和c)你可能也想在那里添加左大括号。这可以确保正则表达式在嵌套标记上完全失败,而不是匹配“{tag 1 {tag 2}”和“剩下的标记1”}不匹配。 '/ \ {[^ {}] *} /'同样好。 – 2010-10-27 06:29:04

+0

伟大的建议蒂姆 – Evert 2010-10-27 09:35:34

0

为了您的 “工具箱”:网上有正则表达式跳棋,如this一个。它提供了一个很好的测试平台,因为它完全独立于您的代码。

+1 Evert - 你的解决方案看起来不错。

0
$str = 'my name is {your name here} and I am from {country}.'; 
echo preg_replace('/{.*?}/', '', $str),"\n"; 

输出:

my name is and I am from .