2011-11-28 70 views
0

我有串像下面,如何在PHP中使用正则表达式来删除特定字符之间的字符串?

$string = "test coontevt [gallery include=\"12,24\"] first [gallery include=\"12,24\"] second"; 

我需要删除的字符串[gallery开始第一ocuurance的是]

我已经使用这一个,

$string12 = preg_replace('/[gallery.+?)+(/])/i', '', $string); 

,但我只得到空字符串。

最后我想会导致对上面的字符串是,

$string ="test coontevt first second". 

我怎样才能做到这一点使用正则表达式?

plz帮助我?

回答

2

字符[是一个正则表达式元字符。要匹配字面[,您需要将其转义。

$string12 = preg_replace('/\[gallery.+?\]/i', '', $string); 

$string12 = preg_replace('/\[gallery[^\]]+\]/i', '', $string); 
1

你需要躲避方括号

$string12 = preg_replace('/\[gallery.+?\]/i', '', $string); 

圆括弧是不必要的,所以我把他们赶走,还有那些支架和前斜线之间的量词最后一个方括号。

为了避免在结果中出现多个空间,我还会匹配周围的空间并用1个空格替换。

\s+\[gallery.+?\]\s+和一个空格替换

$string12 = preg_replace('/\s+\[gallery.+?\]\s+/i', ' ', $string); 

在这里看到这种表达online on Regexr

0

试试这样说:

$string12 = preg_replace('/\[gallery[^\]]+\]/i', '', $string); 

[^\]]+意味着可以有一个或多个字符,不是]。如果您不想使用反向引用,则不需要任何()

相关问题