2011-08-14 8 views
0

인용문이라는 Drupal 모듈을 수정하고 있습니다. 기본적으로 나는 이것을 설정하려면 :PHP를 사용하여 문자열에서 BB 형 태그를 벗겨 내기

"안녕하세요 lorum ipsum의 [인용 = randomuser1] [인용 = 사용자 2] 단어 [/ 인용] 안녕하세요 [/ 인용] 안녕 랜덤 :.! P"이에

:

"안녕하세요 lorum ipsum의 안녕 랜덤 : P"

이 작업을 수행 할 수있는 간단한 정규식이 있는가, 아니면 다른 포함 [인용 = 사용자] 텍스트의 루프 기록 위치의 어떤 종류를 생각해야합니다 [quote = user2] hello [/ quote] s [/ quote]?

정말 감사합니다 :)

대신 루프의
+0

: = ""$의 tmp; $ level = 0; 위한 ($ I = 0, $ 리터 = 용의 strlen ($ 시세가) $ i가 $ 패 <; $ 난 ++) { \t 경우 (SUBSTR ($ 시세, $ I, 7) == '[인용 =') $ 레벨 ++; \t if (substr ($ quote, $ i-8, 8) == '[/ quote]') $ level--; \t if ($ level <1) $ tmp. = substr ($ quote, $ i, 1); } – felamaslen

답변

0

, 난 당신이 [태그]와 [/ 태그] 사이에 아무것도 제거 정규식을 사용하는 것이 좋습니다 것입니다. 이것에 대해 어떻게 :

$string = "hello lorum ipsum [quote=randomuser1][quote=user2]a word.[/quote] Hi there![/quote] Hi random :P"; 
$newString = preg_replace("^\[.*]\]*^","",$string); 

$ newstring 인수로 쓰여진 이제 포함됩니다 "안녕하세요 lorum ipsum의 안녕 랜덤 : P"지금은 정규 표현식에없이 완전히 임시 솔루션을 사용하고 들어

+0

감사합니다. 그 정규식을 이해하지 못하는 것은 대괄호가없는 오른쪽 대괄호가있는 것처럼 보입니다. 유일한 문제는 대체가 제대로 작동하기 전에 모든 개행을 제거해야한다는 것입니다. – felamaslen

+0

오 기다려주십시오. 이제 여러 따옴표가 작동하지 않습니다. \ [quote = (\ w) + \] [^ \ [\/quote \]] \ [\/quote \] 즉 제거 할 수 있어야합니다. 모든 따옴표를 제거하십시오. 하지만 그 정규식은 작동하지 않습니다. – felamaslen