2014-01-28 7 views
1

좋아, 내가하고있는 빈 총알 포인트 목록을 제거하는 PHP 메소드가 필요하다. 여기 빈칸 제거 (BBCode)

내가 가진 예는 다음과 같습니다

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

하지만 난 단지는 [*] 비어있는 것을 그래서 이것은 ... 제거 할 수 있습니다 잡아 그것을 얻이 수없는 것 ... 그래서 나는 $에 넣을 수있는 공백이 아닌 사람을 잡는 것은 변수 아래에 일치 ..

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

을하지만 .. 나는 $ 그래서 난 그냥 그들을 제거 할 수 있습니다 빈들로 구성하는 일치 원하거나 모든 것을 포기할 방법이 있지만 fo를 제외하고 제거 할 경기가 있다면 R에서 [목록] ...

당신이 볼 수 있듯이, 그것은 잡아 년대 [에서 [/ 목록] 나도 원하는 바가 아니다. 그들 중 일부는 빈이 빈 셋, 하나의 빈, 또는 ... 더 ...

어떤 도움

을 감상 할 수있을 것이다.

감사합니다.

답변

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);