2014-01-28 66 views
1

好吧,所以我想出一个PHP方法,删除我正在做的空白项目点列表。删除空白项目符号点(BBCode)

下面是一个例子,我有:

http://rubular.com/r/01ydqcWx3Q

但我似乎无法得到它只是抢到了[*]认为是空白的,所以我可以删除它们...... 这是抓住非空白的人..所以我可以把它放在$符合下列变量:

preg_match('/\[\*\][A-z0-9 ]+/', $body, $matches); 

但是...我希望$匹配由空白的人,所以我可以只删除它们..或如果有一种方法可以抓取所有除了fo以外的所有匹配项r [列表] ..

正如您所看到的,它抓取[[/ list]中的[这不是我想要的]。 其中一些将只有两个空白,三个空白,一个空白,或...更多...

任何帮助,将不胜感激。

谢谢!

回答

0

如果你想用正则表达式匹配[*],你必须逃避所有三个字符反斜杠,因为它们是meta-characters。接下来,您必须确定[*]后面是否紧接着一个换行符(\n\r\n)或列表末尾([/list])。然后用空字符串替换它。

$body = "[list][*]Hydrogen 
[*] 
[*]Helium 
[*]Lithium 
[*] 
[*] 
[*]Beryllium 
[*]Boron 
[*]Carbon 
[*]Nitrogen 
[*] 
[*]Oxygen 
[*][/list]"; 
$body = preg_replace("/\[\*\](?:\r?\n|(?=\[\/list\]))/", "", $body); 
print($body); 

的输出将是:

[list][*]Hydrogen 
[*]Helium 
[*]Lithium 
[*]Beryllium 
[*]Boron 
[*]Carbon 
[*]Nitrogen 
[*]Oxygen 
[/list] 
0

使用此赶上正好包含字符串只是[*]

^\[\*\]$ 

的指令是:

preg_replace('/^\[\*\]$/', '', $body);